@Override public void writeComplete() { if (currentWriteBuffer.remaining() <= 0) { currentWriteBuffer.clear(); eba.accept(currentWriteBuffer); currentWriteBuffer = null; adjustChannelWritability(); } }
@Override public void recycleBuffer(ByteBuffer buffer) { buffer.clear(); ccb.getReadInterface().getEmptyBufferAcceptor().accept(buffer); }
@Override public void recycleBuffer(ByteBuffer buffer) { buffer.clear(); ccb.getReadInterface().getEmptyBufferAcceptor().accept(buffer); }
@Override public void accept(ByteBuffer buffer) { try { INcAddressedMessage receivedMsg = (INcAddressedMessage) JavaSerializationUtils.deserialize(buffer.array()); // Queue the received message and free the network IO thread messageBroker.queueReceivedMessage(receivedMsg); } catch (ClassNotFoundException | IOException e) { if (LOGGER.isWarnEnabled()) { LOGGER.log(Level.WARN, e.getMessage(), e); } } finally { recycle.accept(buffer); } }
@Override public void channelOpened(ChannelControlBlock channel) { channel.getReadInterface().setFullBufferAcceptor(new InitialBufferAcceptor(channel)); channel.getReadInterface().getEmptyBufferAcceptor().accept(ByteBuffer.allocate(INITIAL_MESSAGE_SIZE)); } }
@Override public void channelOpened(ChannelControlBlock channel) { channel.getReadInterface().setFullBufferAcceptor(new InitialBufferAcceptor(channel)); channel.getReadInterface().getEmptyBufferAcceptor().accept(ByteBuffer.allocate(INITIAL_MESSAGE_SIZE)); } }
@Override public void open(IHyracksCommonContext ctx) throws HyracksDataException { try { ccb = netManager.connect(remoteAddress); } catch (Exception e) { throw HyracksDataException.create(e); } ccb.getReadInterface().setFullBufferAcceptor(new ReadFullBufferAcceptor()); ccb.getWriteInterface().setEmptyBufferAcceptor(new WriteEmptyBufferAcceptor()); for (int i = 0; i < nBuffers; ++i) { ccb.getReadInterface().getEmptyBufferAcceptor().accept(ctx.allocateFrame()); } ByteBuffer writeBuffer = ByteBuffer.allocate(INITIAL_MESSAGE_SIZE); writeBuffer.putLong(jobId.getId()); writeBuffer.putLong(resultSetId.getId()); writeBuffer.putInt(partition); writeBuffer.flip(); if (LOGGER.isTraceEnabled()) { LOGGER.trace("Sending partition request for JobId: " + jobId + " partition: " + partition + " on channel: " + ccb); } ccb.getWriteInterface().getFullBufferAcceptor().accept(writeBuffer); ccb.getWriteInterface().getFullBufferAcceptor().close(); }