Interface Content.Chunk

All Superinterfaces:
Retainable
All Known Implementing Classes:
ByteBufferChunk, ByteBufferChunk.ReleasedByConsumer, ByteBufferChunk.ReleasedByRunnable, ByteBufferChunk.WithReferenceCount, ByteBufferChunk.WithRetainable, Trailers
Enclosing class:
Content

public static interface Content.Chunk extends Retainable

A chunk of content indicating whether it is the last chunk.

Optionally, a release function may be specified (for example to release the ByteBuffer back into a pool), or the Retainable.release() method overridden.

  • Field Details

  • Method Details

    • from

      static Content.Chunk from(ByteBuffer byteBuffer, boolean last)

      Creates a Chunk with the given ByteBuffer.

      The returned Chunk must be released.

      Parameters:
      byteBuffer - the ByteBuffer with the bytes of this Chunk
      last - whether the Chunk is the last one
      Returns:
      a new Chunk
    • from

      static Content.Chunk from(ByteBuffer byteBuffer, boolean last, Runnable releaser)

      Creates a Chunk with the given ByteBuffer.

      The returned Chunk must be released.

      Parameters:
      byteBuffer - the ByteBuffer with the bytes of this Chunk
      last - whether the Chunk is the last one
      releaser - the code to run when this Chunk is released
      Returns:
      a new Chunk
    • from

      static Content.Chunk from(ByteBuffer byteBuffer, boolean last, Consumer<ByteBuffer> releaser)

      Creates a last/non-last Chunk with the given ByteBuffer.

      The returned Chunk must be released.

      Parameters:
      byteBuffer - the ByteBuffer with the bytes of this Chunk
      last - whether the Chunk is the last one
      releaser - the code to run when this Chunk is released
      Returns:
      a new Chunk
    • asChunk

      static Content.Chunk asChunk(ByteBuffer byteBuffer, boolean last, Retainable retainable)

      Returns the given ByteBuffer and last arguments as a Chunk, linked to the given Retainable.

      The Retainable.retain() and Retainable.release() methods of this Chunk will delegate to the given Retainable.

      Parameters:
      byteBuffer - the ByteBuffer with the bytes of this Chunk
      last - whether the Chunk is the last one
      retainable - the Retainable this Chunk links to
      Returns:
      a new Chunk
    • from

      static Content.Chunk from(Throwable failure)

      Creates an failure chunk with the given failure and isLast() returning true.

      Parameters:
      failure - the cause of the failure
      Returns:
      a new failure chunk
    • from

      static Content.Chunk from(Throwable failure, boolean last)

      Creates an failure chunk with the given failure and given last state.

      Parameters:
      failure - the cause of the failure
      last - true if the failure is terminal, else false for transient failure
      Returns:
      a new failure chunk
    • next

      static Content.Chunk next(Content.Chunk chunk)

      Returns the chunk that follows the given chunk.

      Next Chunk
      Input Chunk Output Chunk
      null null
      Failure and last Error
      Failure and not last null
      isLast() EOF
      any other Chunk null
    • isFailure

      static boolean isFailure(Content.Chunk chunk)
      Parameters:
      chunk - The chunk to test for an failure.
      Returns:
      True if the chunk is non-null and chunk.getError() returns non-null.
    • isFailure

      static boolean isFailure(Content.Chunk chunk, boolean last)
      Parameters:
      chunk - The chunk to test for an failure
      last - The last status to test for.
      Returns:
      True if the chunk is non-null and getFailure() returns non-null and isLast() matches the passed status.
    • getByteBuffer

      ByteBuffer getByteBuffer()
      Returns:
      the ByteBuffer of this Chunk
    • getFailure

      default Throwable getFailure()
      Get a failure (which may be from a failure or a warning), if any, associated with the chunk.
      • A chunk must not have a failure and a getByteBuffer() with content.
      • A chunk with a failure may or may not be last.
      • A chunk with a failure must not be retainable.
      Returns:
      A Throwable indicating the failure or null if there is no failure or warning.
      See Also:
    • isLast

      boolean isLast()
      Returns:
      whether this is the last Chunk
    • remaining

      default int remaining()
      Returns:
      the number of bytes remaining in this Chunk
    • hasRemaining

      default boolean hasRemaining()
      Returns:
      whether this Chunk has remaining bytes
    • get

      default int get(byte[] bytes, int offset, int length)

      Copies the bytes from this Chunk to the given byte array.

      Parameters:
      bytes - the byte array to copy the bytes into
      offset - the offset within the byte array
      length - the maximum number of bytes to copy
      Returns:
      the number of bytes actually copied
    • skip

      default int skip(int length)

      Skips, advancing the ByteBuffer position, the given number of bytes.

      Parameters:
      length - the maximum number of bytes to skip
      Returns:
      the number of bytes actually skipped
    • asReadOnly

      default Content.Chunk asReadOnly()
      Returns:
      an immutable version of this Chunk