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.