Class 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()));
             }
         }
     
    • Method Detail

      • 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.