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