void receive() throws IOException { while (!received) { if (connection.receive() < 0) return; } received = false; }
@Override public int receive() throws IOException { return session.getFIX().receive(); }
@Override public void run() { try { while (!closed) { int numKeys = selector.select(TIMEOUT_MILLIS); if (numKeys > 0) { synchronized (lock) { if (connection.receive() < 0) break; } selector.selectedKeys().clear(); } synchronized (lock) { connection.updateCurrentTimestamp(); connection.keepAlive(); } } } catch (IOException e) { } try { connection.close(); } catch (IOException e) { } try { selector.close(); } catch (IOException e) { } }
private static void main(int port) throws IOException { Acceptor acceptor = Acceptor.open(new InetSocketAddress(port)); Session session = acceptor.accept(); acceptor.close(); int i = 0; while (true) { if (session.getConnection().receive() < 0) break; if (i % 1000 == 0) { session.getConnection().updateCurrentTimestamp(); session.getConnection().keepAlive(); } i++; } session.getConnection().close(); }