public final class CoalescingBufferQueue extends AbstractCoalescingBufferQueue
ByteBuf
添加字节的FIFO队列,消费者以任意长度获取字节。
这允许生产者添加大量的小缓冲区,消费者可以将所有的字节放在一个缓冲区中。
相反,生产者可以添加更大的缓冲区,并且消费者可以在许多小缓冲区中获取字节。
字节通过承诺添加和删除。 如果添加了promise的缓冲区的最后一个字节被删除,那么当承诺传递到remove(int, io.netty.channel.ChannelPromise)
完成时,该承诺将完成。
此功能对将聚合或划分写入固定大小的缓冲区以便组帧等协议(如HTTP2)很有用。
Constructor and Description |
---|
CoalescingBufferQueue(Channel channel) |
CoalescingBufferQueue(Channel channel, int initSize) |
CoalescingBufferQueue(Channel channel, int initSize, boolean updateWritability) |
Modifier and Type | Method and Description |
---|---|
protected ByteBuf |
compose(ByteBufAllocator alloc, ByteBuf cumulation, ByteBuf next)
计算
current + next 的结果。
|
void |
releaseAndFailAll(java.lang.Throwable cause)
释放队列中的所有缓冲区并完成所有侦听器和承诺。
|
ByteBuf |
remove(int bytes, ChannelPromise aggregatePromise)
用指定的字节数从队列中删除 ByteBuf 。
|
protected ByteBuf |
removeEmptyValue()
|
add, add, add, addFirst, composeFirst, composeIntoComposite, copyAndCompose, copyTo, isEmpty, readableBytes, releaseAndFailAll, remove, removeFirst, size, writeAndRemoveAll
public CoalescingBufferQueue(Channel channel)
public CoalescingBufferQueue(Channel channel, int initSize)
public CoalescingBufferQueue(Channel channel, int initSize, boolean updateWritability)
public ByteBuf remove(int bytes, ChannelPromise aggregatePromise)
ByteBuf
。
任何添加的缓冲区字节在删除过程中将被完全消耗,它会在传递的聚合ChannelPromise
完成时承诺完成。
bytes
-返回可读的最大字节数ByteBuf
,如果bytes
大于AbstractCoalescingBufferQueue.readableBytes
接着长度的缓冲器AbstractCoalescingBufferQueue.readableBytes
被返回。
aggregatePromise
- 用于聚合组成缓冲区的承诺和侦听器。
ByteBuf
。
public void releaseAndFailAll(java.lang.Throwable cause)
protected ByteBuf compose(ByteBufAllocator alloc, ByteBuf cumulation, ByteBuf next)
AbstractCoalescingBufferQueue
current + next
。
compose
在课堂上
AbstractCoalescingBufferQueue
protected ByteBuf removeEmptyValue()
AbstractCoalescingBufferQueue
removeEmptyValue
在课堂上
AbstractCoalescingBufferQueue
ByteBuf
。
Copyright © 2008–2018 The Netty Project. All rights reserved.