public void run() {
        // Either wait for the timeout or keep processing the inputs.
        // Using Futures: http://stackoverflow.com/questions/2275443/how-to-timeout-a-thread
        ExecutorService executor = Executors.newSingleThreadExecutor();
        Future<Integer> ret = null;
        Integer mpsNum = -1;
        try {
            System.out.println("ReporterHandler: Waiting for reports.");
            // handle reports
            while (true) {
                ret = executor.submit(new ReportIteration(in, monitor));
                mpsNum = ret.get(ALIVE_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
            }
        } catch (TimeoutException e) {
        } catch (InterruptedException e) {
        } catch (ExecutionException e) {
        }
        monitor.deleteMPS(mpsNum);
        System.out.println("ReporterHandler: Deleting: " + mpsNum );
    }