Class Http2DataChunkedInput

java.lang.Object
io.netty.handler.codec.http2.Http2DataChunkedInput
All Implemented Interfaces:
ChunkedInput<Http2DataFrame>

public final class Http2DataChunkedInput extends java.lang.Object implements ChunkedInput<Http2DataFrame>
A ChunkedInput that fetches data chunk by chunk for use with HTTP/2 Data Frames.

Each chunk from the input data will be wrapped within a Http2DataFrame. At the end of the input data, Http2DataFrame.isEndStream() will be set to true and will be written.


    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
        if (msg instanceof Http2HeadersFrame) {
            Http2HeadersFrame http2HeadersFrame = (Http2HeadersFrame) msg;

            Http2HeadersFrame response = new DefaultHttp2HeadersFrame(new DefaultHttp2Headers().status("200"));
            response.stream(http2HeadersFrame.stream());
            ctx.write(response);

            ChannelFuture sendFileFuture = ctx.writeAndFlush(new Http2DataChunkedInput(
                    new ChunkedFile(new File(("/home/meow/cats.mp4"))), http2HeadersFrame.stream()));
        }
    }
  • Field Details

  • Constructor Details

  • Method Details

    • isEndOfInput

      public boolean isEndOfInput() throws java.lang.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<Http2DataFrame>
      Throws:
      java.lang.Exception
    • close

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

      @Deprecated public Http2DataFrame readChunk(ChannelHandlerContext ctx) throws java.lang.Exception
      Deprecated.
      Specified by:
      readChunk in interface ChunkedInput<Http2DataFrame>
      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:
      java.lang.Exception
    • readChunk

      public Http2DataFrame readChunk(ByteBufAllocator allocator) throws java.lang.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<Http2DataFrame>
      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:
      java.lang.Exception
    • length

      public long length()
      Description copied from interface: ChunkedInput
      Returns the length of the input.
      Specified by:
      length in interface ChunkedInput<Http2DataFrame>
      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<Http2DataFrame>