Class LengthDelimitedDecoder

  • All Implemented Interfaces:
    ContentDecoder, FileContentDecoder

    public class LengthDelimitedDecoder
    extends AbstractContentDecoder
    implements FileContentDecoder
    Content decoder that cuts off after a defined number of bytes. This class is used to receive content of HTTP messages where the end of the content entity is determined by the value of the Content-Length header. Entities transferred using this stream can be maximum Long.MAX_VALUE long.

    This decoder is optimized to transfer data directly from the underlying I/O session's channel to a FileChannel, whenever possible avoiding intermediate buffering in the session buffer.

    Since:
    4.0
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int read​(java.nio.ByteBuffer dst)
      Reads a portion of content from the underlying channel
      java.lang.String toString()  
      long transfer​(java.nio.channels.FileChannel dst, long position, long count)
      Transfers a portion of entity content from the underlying network channel into the given file channel.
      Warning: Many implementations cannot write beyond the length of the file.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Method Detail

      • read

        public int read​(java.nio.ByteBuffer dst)
                 throws java.io.IOException
        Description copied from interface: ContentDecoder
        Reads a portion of content from the underlying channel
        Specified by:
        read in interface ContentDecoder
        Parameters:
        dst - The buffer into which entity content is to be transferred
        Returns:
        The number of bytes read, possibly zero, or -1 if the channel has reached end-of-stream
        Throws:
        java.io.IOException - if I/O error occurs while reading content
      • transfer

        public long transfer​(java.nio.channels.FileChannel dst,
                             long position,
                             long count)
                      throws java.io.IOException
        Description copied from interface: FileContentDecoder
        Transfers a portion of entity content from the underlying network channel into the given file channel.
        Warning: Many implementations cannot write beyond the length of the file. If the position exceeds the channel's size, some implementations may throw an IOException.
        Specified by:
        transfer in interface FileContentDecoder
        Parameters:
        dst - the target FileChannel to transfer data into.
        position - The position within the file at which the transfer is to begin; must be non-negative. Must be less than or equal to the size of the file
        count - The maximum number of bytes to be transferred; must be non-negative
        Returns:
        The number of bytes, possibly zero, that were actually transferred
        Throws:
        java.io.IOException - if some I/O error occurs.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object