예제 #1
0
  private void receiveLoop() {
    while (run) {
      try {
        buf.reserve(4, false);
        in.readFully(buf.bytes(), 0, 4);
        buf.length(4);

        int len = buf.direct().getInt(0);

        buf.reserve(len, false);
        in.readFully(buf.bytes(), 0, len);
        buf.length(len);

        dispatcher.dispatch(buf.direct(), 0, len);
      } catch (Exception e) {
        stop();
        if (run) {
          if (exceptionHandler != null) {
            exceptionHandler.error("TCP Receive Error", e);
          } else {
            logger.error("TcpReceiver Error", e);
          }
        }
      }
    }
  }