public static void main()

in src/main/java/deltix/ember/sample/PositionRequestSample.java [27:67]


    public static void main(String[] args) throws InterruptedException, IOException {
        if (args.length != 1)
            throw new IllegalArgumentException("Expecting output CSV filename as argument");
        final CSVWriter csvWriter = createCSV(args[0]);
        final String positionRequestId = "PR#" + System.currentTimeMillis(); // generate unique request ID
        final ShutdownSignal shutdownSignal = new ShutdownSignal();

        sendRequest(
                (publication) -> {
                    MutablePositionRequest request = createPositionRequest(positionRequestId, positionProjection);
                    publication.onPositionRequest(request);
                    LOGGER.info("Sent position request %s for projection %s").with(request.getRequestId()).with(request.getProjection());

                    if (shutdownSignal.await(5, TimeUnit.MINUTES))
                        LOGGER.info("Success");
                    else
                        LOGGER.error("Timeout waiting for position response!");

                },

                (message) -> {
                    if (message instanceof PositionReport) {
                        PositionReport report = (PositionReport) message;
                        LOGGER.info("Received position report %s").with(report);

                        if (report.getRequestId().equals(positionRequestId)) {
                            if (! report.isFound()) {
                                LOGGER.error("Projection %s was not found").with(positionProjection);
                            } else {
                                writeReport(report, csvWriter);
                            }
                            if (report.isLast())
                                shutdownSignal.signal();
                        }
                    }
                }
        );

        csvWriter.close();

    }