Class ChannelOutboundBuffer
java.lang.Object
io.netty.channel.ChannelOutboundBuffer
(Transport implementors only) an internal data structure used by
AbstractChannel to store its pending
outbound write requests.
All methods must be called by a transport implementation from an I/O thread, except the following ones:
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionvoidaddFlush()Add a flush to thisChannelOutboundBuffer.voidaddMessage(Object msg, int size, ChannelPromise promise) Add given message to thisChannelOutboundBuffer.longGet how many bytes can be written untilisWritable()returnsfalse.longGet how many bytes must be drained from the underlying buffer untilisWritable()returnstrue.current()Return the current message to write ornullif nothing was flushed before and so is ready to be written.longReturn the current message flush progress.voidCallChannelOutboundBuffer.MessageProcessor.processMessage(Object)for each flushed message in thisChannelOutboundBufferuntilChannelOutboundBuffer.MessageProcessor.processMessage(Object)returnsfalseor there are no more flushed messages to process.booleangetUserDefinedWritability(int index) Returnstrueif and only if the user-defined writability flag at the specified index is set totrue.booleanisEmpty()booleanReturnstrueif and only if the total number of pending bytes did not exceed the write watermark of theChanneland no user-defined writability flag has been set tofalse.intReturns the number ofByteBufferthat can be written out of theByteBufferarray that was obtained vianioBuffers().Returns an array of direct NIO buffers if the currently pending messages are made ofByteBufonly.nioBuffers(int maxCount, long maxBytes) Returns an array of direct NIO buffers if the currently pending messages are made ofByteBufonly.longReturns the number of bytes that can be written out of theByteBufferarray that was obtained vianioBuffers().voidprogress(long amount) Notify theChannelPromiseof the current message about writing progress.voidrecycle()Deprecated.booleanremove()Will remove the current message, mark itsChannelPromiseas success and returntrue.booleanWill remove the current message, mark itsChannelPromiseas failure using the givenThrowableand returntrue.voidremoveBytes(long writtenBytes) Removes the fully written entries and update the reader index of the partially written entry.voidsetUserDefinedWritability(int index, boolean writable) Sets a user-defined writability flag at the specified index.intsize()Returns the number of flushed messages in thisChannelOutboundBuffer.long
-
Method Details
-
addMessage
Add given message to thisChannelOutboundBuffer. The givenChannelPromisewill be notified once the message was written. -
addFlush
public void addFlush()Add a flush to thisChannelOutboundBuffer. This means all previous added messages are marked as flushed and so you will be able to handle them. -
current
Return the current message to write ornullif nothing was flushed before and so is ready to be written. -
currentProgress
public long currentProgress()Return the current message flush progress.- Returns:
0if nothing was flushed before for the current message or there is no current message
-
progress
public void progress(long amount) Notify theChannelPromiseof the current message about writing progress. -
remove
public boolean remove()Will remove the current message, mark itsChannelPromiseas success and returntrue. If no flushed message exists at the time this method is called it will returnfalseto signal that no more messages are ready to be handled. -
remove
Will remove the current message, mark itsChannelPromiseas failure using the givenThrowableand returntrue. If no flushed message exists at the time this method is called it will returnfalseto signal that no more messages are ready to be handled. -
removeBytes
public void removeBytes(long writtenBytes) Removes the fully written entries and update the reader index of the partially written entry. This operation assumes all messages in this buffer isByteBuf. -
nioBuffers
Returns an array of direct NIO buffers if the currently pending messages are made ofByteBufonly.nioBufferCount()andnioBufferSize()will return the number of NIO buffers in the returned array and the total number of readable bytes of the NIO buffers respectively.Note that the returned array is reused and thus should not escape
AbstractChannel.doWrite(ChannelOutboundBuffer). Refer toNioSocketChannel.doWrite(ChannelOutboundBuffer)for an example. -
nioBuffers
Returns an array of direct NIO buffers if the currently pending messages are made ofByteBufonly.nioBufferCount()andnioBufferSize()will return the number of NIO buffers in the returned array and the total number of readable bytes of the NIO buffers respectively.Note that the returned array is reused and thus should not escape
AbstractChannel.doWrite(ChannelOutboundBuffer). Refer toNioSocketChannel.doWrite(ChannelOutboundBuffer)for an example.- Parameters:
maxCount- The maximum amount of buffers that will be added to the return value.maxBytes- A hint toward the maximum number of bytes to include as part of the return value. Note that this value maybe exceeded because we make a best effort to include at least 1ByteBufferin the return value to ensure write progress is made.
-
nioBufferCount
public int nioBufferCount()Returns the number ofByteBufferthat can be written out of theByteBufferarray that was obtained vianioBuffers(). This method MUST be called afternioBuffers()was called. -
nioBufferSize
public long nioBufferSize()Returns the number of bytes that can be written out of theByteBufferarray that was obtained vianioBuffers(). This method MUST be called afternioBuffers()was called. -
isWritable
public boolean isWritable()Returnstrueif and only if the total number of pending bytes did not exceed the write watermark of theChanneland no user-defined writability flag has been set tofalse. -
getUserDefinedWritability
public boolean getUserDefinedWritability(int index) Returnstrueif and only if the user-defined writability flag at the specified index is set totrue. -
setUserDefinedWritability
public void setUserDefinedWritability(int index, boolean writable) Sets a user-defined writability flag at the specified index. -
size
public int size()Returns the number of flushed messages in thisChannelOutboundBuffer. -
isEmpty
public boolean isEmpty() -
recycle
Deprecated. -
totalPendingWriteBytes
public long totalPendingWriteBytes() -
bytesBeforeUnwritable
public long bytesBeforeUnwritable()Get how many bytes can be written untilisWritable()returnsfalse. This quantity will always be non-negative. IfisWritable()isfalsethen 0. -
bytesBeforeWritable
public long bytesBeforeWritable()Get how many bytes must be drained from the underlying buffer untilisWritable()returnstrue. This quantity will always be non-negative. IfisWritable()istruethen 0. -
forEachFlushedMessage
public void forEachFlushedMessage(ChannelOutboundBuffer.MessageProcessor processor) throws Exception CallChannelOutboundBuffer.MessageProcessor.processMessage(Object)for each flushed message in thisChannelOutboundBufferuntilChannelOutboundBuffer.MessageProcessor.processMessage(Object)returnsfalseor there are no more flushed messages to process.- Throws:
Exception
-