Class HttpChunkedInput

  • All Implemented Interfaces:
    ChunkedInput<HttpContent<?>>, AutoCloseable

    public class HttpChunkedInput
    extends Object
    implements ChunkedInput<HttpContent<?>>
    A ChunkedInput that fetches data chunk by chunk for use with HTTP chunked transfers.

    Each chunk from the input data will be wrapped within a HttpContent. At the end of the input data, LastHttpContent will be written.

    Ensure that your HTTP response header contains Transfer-Encoding: chunked.

     public void messageReceived(ChannelHandlerContext ctx, FullHttpRequest request) throws Exception {
         HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK);
         response.headers().set(TRANSFER_ENCODING, CHUNKED);
         ctx.write(response);
    
         HttpContentChunkedInput httpChunkWriter = new HttpChunkedInput(
             new ChunkedFile("/tmp/myfile.txt"));
         Future<Void> sendFileFuture = ctx.write(httpChunkWriter);
     }
     
    • Constructor Detail

      • HttpChunkedInput

        public HttpChunkedInput​(ChunkedInput<Buffer> input,
                                LastHttpContent<?> lastHttpContent)
        Creates a new instance using the specified input. lastHttpContent will be written as the terminating chunk.
        Parameters:
        input - ChunkedInput containing data to write
        lastHttpContent - LastHttpContent that will be written as the terminating chunk. Use this for training headers.
    • Method Detail

      • readChunk

        public HttpContent<?> readChunk​(BufferAllocator 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<HttpContent<?>>
        Parameters:
        allocator - BufferAllocator 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<HttpContent<?>>
        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.