public final class ChannelOutboundBuffer
extends java.lang.Object
AbstractChannel使用的内部数据结构来存储其挂起的出站写入请求。
所有方法必须由I / O线程的传输实现调用,除了以下几点:
| Modifier and Type | Class and Description |
|---|---|
static interface |
ChannelOutboundBuffer.MessageProcessor |
| Modifier and Type | Method and Description |
|---|---|
void |
addFlush()
添加一个刷新到这个 ChannelOutboundBuffer 。
|
void |
addMessage(java.lang.Object msg, int size, ChannelPromise promise)
给此消息添加 ChannelOutboundBuffer 。
|
long |
bytesBeforeUnwritable()
获取可以写入多少个字节,直到
isWritable()返回
false 。
|
long |
bytesBeforeWritable()
获取必须从底层缓冲区中消耗多少字节,直到
isWritable()返回
true 。
|
java.lang.Object |
current()
如果以前没有刷新任何内容,则返回当前消息以写入或
null ,因此准备写入。
|
void |
forEachFlushedMessage(ChannelOutboundBuffer.MessageProcessor processor)
|
boolean |
getUserDefinedWritability(int index)
返回
true当且仅当该指定的索引在所述用户定义的可写性标志被设置为
true 。
|
boolean |
isEmpty()
如果 ChannelOutboundBuffer或false有消息存在,则返回true 。
|
boolean |
isWritable()
返回 true当且仅当the total number of pending bytes未超过的写入水印Channel并没有user-defined writability flag已被设置为false 。
|
int |
nioBufferCount()
|
java.nio.ByteBuffer[] |
nioBuffers()
如果当前未决消息仅由 ByteBuf组成,则返回直接NIO缓冲区的数组。
|
java.nio.ByteBuffer[] |
nioBuffers(int maxCount, long maxBytes)
如果当前未决消息仅由 ByteBuf组成,则返回直接NIO缓冲区数组。
|
long |
nioBufferSize()
返回可以被写出的字节数
ByteBuffer ,其通过获得阵列
nioBuffers() 。
|
void |
progress(long amount)
通知 ChannelPromise关于写入进度的当前消息。
|
void |
recycle()
已过时。
|
boolean |
remove()
将删除当前消息,将其 ChannelPromise标记为成功,并返回true 。
|
boolean |
remove(java.lang.Throwable cause)
将删除当前消息,使用给定的 Throwable将它的ChannelPromise标记为失败并返回true 。
|
void |
removeBytes(long writtenBytes)
删除完整书写的条目并更新部分书写条目的阅读器索引。
|
void |
setUserDefinedWritability(int index, boolean writable)
在指定的索引处设置用户定义的可写性标志。
|
int |
size()
返回此 ChannelOutboundBuffer中刷新消息的数量。
|
long |
totalPendingWriteBytes() |
public void addMessage(java.lang.Object msg,
int size,
ChannelPromise promise)
ChannelOutboundBuffer 。
给定的ChannelPromise将在消息写入后通知。
public void addFlush()
ChannelOutboundBuffer 。
这意味着所有之前添加的消息都被标记为刷新,因此您将能够处理它们。
public java.lang.Object current()
null ,因此准备写入。
public void progress(long amount)
ChannelPromise关于写入进度的当前消息。
public boolean remove()
ChannelPromise标记为成功,并返回true 。
如果在调用此方法时不存在刷新的消息,它将返回false ,表示没有更多的消息准备好处理。
public boolean remove(java.lang.Throwable cause)
Throwable将它的ChannelPromise标记为失败并返回true 。
如果在调用此方法时不存在刷新的消息,它将返回false ,表示没有更多消息准备好处理。
public void removeBytes(long writtenBytes)
ByteBuf 。
public java.nio.ByteBuffer[] nioBuffers()
ByteBuf组成,则返回直接NIO缓冲区的数组。
nioBufferCount()和nioBufferSize()将分别返回返回数组中NIO缓冲区的数量和可读字节的总数。
请注意,返回的数组将被重用,因此不应该转义AbstractChannel.doWrite(ChannelOutboundBuffer) 。 例如,请参阅NioSocketChannel.doWrite(ChannelOutboundBuffer) 。
public java.nio.ByteBuffer[] nioBuffers(int maxCount,
long maxBytes)
ByteBuf组成,则返回直接NIO缓冲区的数组。
nioBufferCount()和nioBufferSize()将分别返回返回数组中NIO缓冲区的数量和NIO缓冲区的可读字节总数。
请注意,返回的数组将被重用,因此不应该转义AbstractChannel.doWrite(ChannelOutboundBuffer) 。 例如,请参阅NioSocketChannel.doWrite(ChannelOutboundBuffer) 。
maxCount - 将被添加到返回值的最大缓冲区数量。
maxBytes - 提示作为返回值的一部分包含的最大字节数。
请注意,可能会超出此值,因为我们尽最大努力在返回值中包含至少1 ByteBuffer以确保写入进度。
public int nioBufferCount()
ByteBuffer可写入出的ByteBuffer这是通过获得阵列nioBuffers() 。
调用nioBuffers()后, 必须调用此方法。
public long nioBufferSize()
ByteBuffer ,其通过获得阵列nioBuffers() 。
必须在调用nioBuffers()之后调用此方法。
public boolean isWritable()
true当且仅当the total number of pending bytes未超过的写入水印Channel并没有user-defined writability flag已被设置为false 。
public boolean getUserDefinedWritability(int index)
true当且仅当该指定的索引在所述用户定义的可写性标志被设置为
true 。
public void setUserDefinedWritability(int index,
boolean writable)
public int size()
ChannelOutboundBuffer中刷新消息的数量。
public boolean isEmpty()
ChannelOutboundBuffer或false存在清除的消息,则返回true 。
@Deprecated public void recycle()
public long totalPendingWriteBytes()
public long bytesBeforeUnwritable()
public long bytesBeforeWritable()
public void forEachFlushedMessage(ChannelOutboundBuffer.MessageProcessor processor) throws java.lang.Exception
ChannelOutboundBuffer.MessageProcessor.processMessage(Object)每个冲洗消息在这个ChannelOutboundBuffer至ChannelOutboundBuffer.MessageProcessor.processMessage(Object)回报false或没有更多的消息冲洗处理。
java.lang.Exception
Copyright © 2008–2018 The Netty Project. All rights reserved.