## org.apache.http.impl.nio.codecs
Class LengthDelimitedDecoder

    java.lang.Object
      org.apache.http.impl.nio.codecs.AbstractContentDecoder
          org.apache.http.impl.nio.codecs.LengthDelimitedDecoder

All Implemented Interfaces:
  ContentDecoder, FileContentDecoder

    @NotThreadSafe
    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

Field Summary

Fields inherited from class org.apache.http.impl.nio.codecs.AbstractContentDecoder
`buffer, channel, completed, metrics`

Constructor Summary
`LengthDelimitedDecoder(ReadableByteChannel channel, SessionInputBuffer buffer, HttpTransportMetricsImpl metrics, long contentLength)`

Method Summary
`int` `read(ByteBuffer dst)` Reads a portion of content from the underlying channel
`String` `toString()`
`long` `transfer(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 org.apache.http.impl.nio.codecs.AbstractContentDecoder
`isCompleted`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.apache.http.nio.ContentDecoder
`isCompleted`

Constructor Detail

### LengthDelimitedDecoder

    public LengthDelimitedDecoder(ReadableByteChannel channel,
                                  SessionInputBuffer buffer,
                                  HttpTransportMetricsImpl metrics,
                                  long contentLength)

Method Detail

### read

    public int read(ByteBuffer dst)
             throws 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:
    `IOException` - if I/O error occurs while reading content

### transfer

    public long transfer(FileChannel dst,
                         long position,
                         long count)
                  throws 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:
    `IOException`

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

Copyright © 2005-2013 The Apache Software Foundation. All Rights Reserved.