in java/ws-server/src/main/java/com/epam/deltix/tbwg/webapp/websockets/WSHandler.java [109:169]
public void run () {
try {
for (;;) {
NextResult next;
Throwable exception = null;
synchronized (object) {
try {
next = c.nextIfAvailable();
} catch (UnavailableResourceException x) {
continue;
} catch (CursorIsClosedException x) {
if (session.isOpen()) {
session.sendMessage(new TextMessage(x.getMessage(), true));
}
stop(CloseStatus.NORMAL);
break;
} catch (CursorException x) {
next = NextResult.OK;
exception = x;
} catch (Throwable x) {
if (session.isOpen()) {
session.sendMessage(new TextMessage(x.getMessage(), false));
}
stop(CloseStatus.SERVER_ERROR);
return;
}
if (exception != null) {
if (session.isOpen()) {
session.sendMessage(new TextMessage(exception.getMessage(), false));
}
continue;
}
if (next == NextResult.OK) {
if (cursor.getMessage().getTimeStampMs() <= toTimestamp) {
buffer.append((RawMessage) cursor.getMessage());
if (buffer.canFlush())
sendBuffer();
messages++;
} else {
stop(CloseStatus.NORMAL);
break;
}
} else if (next == NextResult.END_OF_CURSOR) {
stop(CloseStatus.NORMAL);
break;
}
}
}
// else continue with NextResult.UNAVAILABLE
} catch (ChannelClosedException x) {
stop(CloseStatus.NORMAL);
} catch (IOException iox) {
stop(CloseStatus.SERVER_ERROR);
}
}