Class ChunkedNioStream

java.lang.Object
io.netty.handler.stream.ChunkedNioStream
All Implemented Interfaces:
ChunkedInput<ByteBuf>

public class ChunkedNioStream extends Object implements ChunkedInput<ByteBuf>
A ChunkedInput that fetches data from a ReadableByteChannel chunk by chunk. Please note that the ReadableByteChannel must operate in blocking mode. Non-blocking mode channels are not supported.
  • Field Details

    • in

      private final ReadableByteChannel in
    • chunkSize

      private final int chunkSize
    • offset

      private long offset
    • byteBuffer

      private final ByteBuffer byteBuffer
      Associated ByteBuffer
  • Constructor Details

    • ChunkedNioStream

      public ChunkedNioStream(ReadableByteChannel in)
      Creates a new instance that fetches data from the specified channel.
    • ChunkedNioStream

      public ChunkedNioStream(ReadableByteChannel in, int chunkSize)
      Creates a new instance that fetches data from the specified channel.
      Parameters:
      chunkSize - the number of bytes to fetch on each readChunk(ChannelHandlerContext) call
  • Method Details

    • transferredBytes

      public long transferredBytes()
      Returns the number of transferred bytes.
    • isEndOfInput

      public boolean isEndOfInput() throws Exception
      Description copied from interface: ChunkedInput
      Return true if and only if there is no data left in the stream and the stream has reached at its end.
      Specified by:
      isEndOfInput in interface ChunkedInput<ByteBuf>
      Throws:
      Exception
    • close

      public void close() throws Exception
      Description copied from interface: ChunkedInput
      Releases the resources associated with the input.
      Specified by:
      close in interface ChunkedInput<ByteBuf>
      Throws:
      Exception
    • readChunk

      @Deprecated public ByteBuf readChunk(ChannelHandlerContext ctx) throws Exception
      Deprecated.
      Specified by:
      readChunk in interface ChunkedInput<ByteBuf>
      Parameters:
      ctx - The context which provides a ByteBufAllocator if buffer allocation is necessary.
      Returns:
      the fetched chunk. null if there is no data left in the stream. Please note that null does not necessarily mean that the stream has reached at its end. In a slow stream, the next chunk might be unavailable just momentarily.
      Throws:
      Exception
    • readChunk

      public ByteBuf readChunk(ByteBufAllocator allocator) throws Exception
      Description copied from interface: ChunkedInput
      Fetches a chunked data from the stream. Once this method returns the last chunk and thus the stream has reached at its end, any subsequent ChunkedInput.isEndOfInput() call must return true.
      Specified by:
      readChunk in interface ChunkedInput<ByteBuf>
      Parameters:
      allocator - ByteBufAllocator if buffer allocation is necessary.
      Returns:
      the fetched chunk. null if there is no data left in the stream. Please note that null does not necessarily mean that the stream has reached at its end. In a slow stream, the next chunk might be unavailable just momentarily.
      Throws:
      Exception
    • length

      public long length()
      Description copied from interface: ChunkedInput
      Returns the length of the input.
      Specified by:
      length in interface ChunkedInput<ByteBuf>
      Returns:
      the length of the input if the length of the input is known. a negative value if the length of the input is unknown.
    • progress

      public long progress()
      Description copied from interface: ChunkedInput
      Returns current transfer progress.
      Specified by:
      progress in interface ChunkedInput<ByteBuf>