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);
         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.
        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<?>>
        allocator - BufferAllocator if buffer allocation is necessary.
        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.
      • length

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