Ejemplo n.º 1
0
  public SelectionKey registerForRead(final ReceiveChannelEndpoint transport) {
    SelectionKey key = null;
    try {
      transports = ArrayUtil.add(transports, transport);
      key = transport.receiveDatagramChannel().register(selector, SelectionKey.OP_READ, transport);
    } catch (final ClosedChannelException ex) {
      LangUtil.rethrowUnchecked(ex);
    }

    return key;
  }
Ejemplo n.º 2
0
  private int poll(final ReceiveChannelEndpoint channelEndpoint) {
    int bytesReceived = 0;
    final InetSocketAddress srcAddress = channelEndpoint.receive(byteBuffer);

    if (null != srcAddress) {
      final int length = byteBuffer.position();

      if (channelEndpoint.isValidFrame(unsafeBuffer, length)) {
        switch (frameType(unsafeBuffer, 0)) {
          case HDR_TYPE_PAD:
          case HDR_TYPE_DATA:
            bytesReceived =
                channelEndpoint.onDataPacket(dataMessage, unsafeBuffer, length, srcAddress);
            break;

          case HDR_TYPE_SETUP:
            channelEndpoint.onSetupMessage(setupMessage, unsafeBuffer, srcAddress);
            break;
        }
      }
    }

    return bytesReceived;
  }