@Override public void channelOpened(ChannelControlBlock channel) { // Store the channel's original acceptor (which is set by the application) ICloseableBufferAcceptor fullBufferAcceptor = channel.getReadInterface().getFullBufferAcceptor(); synchronized (channelFullBufferAcceptor) { channelFullBufferAcceptor.put(channel, fullBufferAcceptor); } // Temporary set the acceptor to InitialBufferAcceptor to read the initial message channel.getReadInterface().setFullBufferAcceptor(new InitialBufferAcceptor(channel)); } }
@Override public void channelOpened(ChannelControlBlock channel) { channel.getReadInterface().setFullBufferAcceptor(new InitialBufferAcceptor(channel)); channel.getReadInterface().getEmptyBufferAcceptor().accept(ByteBuffer.allocate(INITIAL_MESSAGE_SIZE)); } }
@Override public void accept(ByteBuffer buffer) { String nodeId = readMessagingInitialMessage(buffer); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Opened messaging channel with node: " + nodeId); } // Return the channel's original acceptor ICloseableBufferAcceptor originalAcceptor; synchronized (channelFullBufferAcceptor) { originalAcceptor = channelFullBufferAcceptor.remove(ccb); if (originalAcceptor == null) { throw new IllegalStateException("Could not find channel acceptor"); } } ccb.getReadInterface().setFullBufferAcceptor(originalAcceptor); addOpenChannel(nodeId, ccb); }
@Override public void channelOpened(ChannelControlBlock channel) { channel.getReadInterface().setFullBufferAcceptor(new InitialBufferAcceptor(channel)); channel.getReadInterface().getEmptyBufferAcceptor().accept(ByteBuffer.allocate(INITIAL_MESSAGE_SIZE)); } }