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();
}