Class AbstractCoalescingBufferQueue10294

java.lang.Object
io.netty.channel.AbstractCoalescingBufferQueue10294

@UnstableApi public abstract class AbstractCoalescingBufferQueue10294 extends Object
Forked from Netty's AbstractCoalescingBufferQueue (4.1.42) Includes fix to guard readableBytes from re-entry. https://github.com/netty/netty/pull/10294
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    AbstractCoalescingBufferQueue10294(io.netty.channel.Channel channel, int initSize)
    Create a new instance.
  • Method Summary

    Modifier and Type
    Method
    Description
    final void
    add(io.netty.buffer.ByteBuf buf)
    Add a buffer to the end of the queue.
    final void
    add(io.netty.buffer.ByteBuf buf, io.netty.channel.ChannelFutureListener listener)
    Add a buffer to the end of the queue and associate a listener with it that should be completed when all the buffers bytes have been consumed from the queue and written.
    final void
    add(io.netty.buffer.ByteBuf buf, io.netty.channel.ChannelPromise promise)
    Add a buffer to the end of the queue and associate a promise with it that should be completed when all the buffer's bytes have been consumed from the queue and written.
    final void
    addFirst(io.netty.buffer.ByteBuf buf, io.netty.channel.ChannelPromise promise)
    Add a buffer to the front of the queue and associate a promise with it that should be completed when all the buffer's bytes have been consumed from the queue and written.
    protected abstract io.netty.buffer.ByteBuf
    compose(io.netty.buffer.ByteBufAllocator alloc, io.netty.buffer.ByteBuf cumulation, io.netty.buffer.ByteBuf next)
    Calculate the result of current + next.
    protected io.netty.buffer.ByteBuf
    composeFirst(io.netty.buffer.ByteBufAllocator allocator, io.netty.buffer.ByteBuf first)
    Calculate the first ByteBuf which will be used in subsequent calls to compose(ByteBufAllocator, ByteBuf, ByteBuf).
    protected final io.netty.buffer.ByteBuf
    composeIntoComposite(io.netty.buffer.ByteBufAllocator alloc, io.netty.buffer.ByteBuf cumulation, io.netty.buffer.ByteBuf next)
    Compose cumulation and next into a new CompositeByteBuf.
    protected final io.netty.buffer.ByteBuf
    copyAndCompose(io.netty.buffer.ByteBufAllocator alloc, io.netty.buffer.ByteBuf cumulation, io.netty.buffer.ByteBuf next)
    Compose cumulation and next into a new ByteBufAllocator.ioBuffer().
    final void
    Copy all pending entries in this queue into the destination queue.
    final boolean
    Are there pending buffers in the queue.
    final int
    The number of readable bytes.
    final void
    releaseAndFailAll(io.netty.channel.ChannelOutboundInvoker invoker, Throwable cause)
    Release all buffers in the queue and complete all listeners and promises.
    final io.netty.buffer.ByteBuf
    remove(io.netty.buffer.ByteBufAllocator alloc, int bytes, io.netty.channel.ChannelPromise aggregatePromise)
    Remove a ByteBuf from the queue with the specified number of bytes.
    protected abstract io.netty.buffer.ByteBuf
    The value to return when remove(ByteBufAllocator, int, ChannelPromise) is called but the queue is empty.
    final io.netty.buffer.ByteBuf
    removeFirst(io.netty.channel.ChannelPromise aggregatePromise)
    Remove the first ByteBuf from the queue.
    protected final int
    Get the number of elements in this queue added via one of the add(ByteBuf) methods.
    final void
    writeAndRemoveAll(io.netty.channel.ChannelHandlerContext ctx)
    Writes all remaining elements in this queue.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • AbstractCoalescingBufferQueue10294

      protected AbstractCoalescingBufferQueue10294(io.netty.channel.Channel channel, int initSize)
      Create a new instance.
      Parameters:
      channel - the Channel which will have the Channel.isWritable() reflect the amount of queued buffers or null if there is no writability state updated.
      initSize - the initial size of the underlying queue.
  • Method Details

    • addFirst

      public final void addFirst(io.netty.buffer.ByteBuf buf, io.netty.channel.ChannelPromise promise)
      Add a buffer to the front of the queue and associate a promise with it that should be completed when all the buffer's bytes have been consumed from the queue and written.
      Parameters:
      buf - to add to the head of the queue
      promise - to complete when all the bytes have been consumed and written, can be void.
    • add

      public final void add(io.netty.buffer.ByteBuf buf)
      Add a buffer to the end of the queue.
    • add

      public final void add(io.netty.buffer.ByteBuf buf, io.netty.channel.ChannelPromise promise)
      Add a buffer to the end of the queue and associate a promise with it that should be completed when all the buffer's bytes have been consumed from the queue and written.
      Parameters:
      buf - to add to the tail of the queue
      promise - to complete when all the bytes have been consumed and written, can be void.
    • add

      public final void add(io.netty.buffer.ByteBuf buf, io.netty.channel.ChannelFutureListener listener)
      Add a buffer to the end of the queue and associate a listener with it that should be completed when all the buffers bytes have been consumed from the queue and written.
      Parameters:
      buf - to add to the tail of the queue
      listener - to notify when all the bytes have been consumed and written, can be null.
    • removeFirst

      public final io.netty.buffer.ByteBuf removeFirst(io.netty.channel.ChannelPromise aggregatePromise)
      Remove the first ByteBuf from the queue.
      Parameters:
      aggregatePromise - used to aggregate the promises and listeners for the returned buffer.
      Returns:
      the first ByteBuf from the queue.
    • remove

      public final io.netty.buffer.ByteBuf remove(io.netty.buffer.ByteBufAllocator alloc, int bytes, io.netty.channel.ChannelPromise aggregatePromise)
      Remove a ByteBuf from the queue with the specified number of bytes. Any added buffer who's bytes are fully consumed during removal will have it's promise completed when the passed aggregate ChannelPromise completes.
      Parameters:
      alloc - The allocator used if a new ByteBuf is generated during the aggregation process.
      bytes - the maximum number of readable bytes in the returned ByteBuf, if bytes is greater than readableBytes then a buffer of length readableBytes is returned.
      aggregatePromise - used to aggregate the promises and listeners for the constituent buffers.
      Returns:
      a ByteBuf composed of the enqueued buffers.
    • readableBytes

      public final int readableBytes()
      The number of readable bytes.
    • isEmpty

      public final boolean isEmpty()
      Are there pending buffers in the queue.
    • releaseAndFailAll

      public final void releaseAndFailAll(io.netty.channel.ChannelOutboundInvoker invoker, Throwable cause)
      Release all buffers in the queue and complete all listeners and promises.
    • copyTo

      public final void copyTo(AbstractCoalescingBufferQueue10294 dest)
      Copy all pending entries in this queue into the destination queue.
      Parameters:
      dest - to copy pending buffers to.
    • writeAndRemoveAll

      public final void writeAndRemoveAll(io.netty.channel.ChannelHandlerContext ctx)
      Writes all remaining elements in this queue.
      Parameters:
      ctx - The context to write all elements to.
    • compose

      protected abstract io.netty.buffer.ByteBuf compose(io.netty.buffer.ByteBufAllocator alloc, io.netty.buffer.ByteBuf cumulation, io.netty.buffer.ByteBuf next)
      Calculate the result of current + next.
    • composeIntoComposite

      protected final io.netty.buffer.ByteBuf composeIntoComposite(io.netty.buffer.ByteBufAllocator alloc, io.netty.buffer.ByteBuf cumulation, io.netty.buffer.ByteBuf next)
      Compose cumulation and next into a new CompositeByteBuf.
    • copyAndCompose

      protected final io.netty.buffer.ByteBuf copyAndCompose(io.netty.buffer.ByteBufAllocator alloc, io.netty.buffer.ByteBuf cumulation, io.netty.buffer.ByteBuf next)
      Compose cumulation and next into a new ByteBufAllocator.ioBuffer().
      Parameters:
      alloc - The allocator to use to allocate the new buffer.
      cumulation - The current cumulation.
      next - The next buffer.
      Returns:
      The result of cumulation + next.
    • composeFirst

      protected io.netty.buffer.ByteBuf composeFirst(io.netty.buffer.ByteBufAllocator allocator, io.netty.buffer.ByteBuf first)
      Calculate the first ByteBuf which will be used in subsequent calls to compose(ByteBufAllocator, ByteBuf, ByteBuf).
    • removeEmptyValue

      protected abstract io.netty.buffer.ByteBuf removeEmptyValue()
      The value to return when remove(ByteBufAllocator, int, ChannelPromise) is called but the queue is empty.
      Returns:
      the ByteBuf which represents an empty queue.
    • size

      protected final int size()
      Get the number of elements in this queue added via one of the add(ByteBuf) methods.
      Returns:
      the number of elements in this queue.