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

    java.lang.Object
      org.apache.http.impl.nio.codecs.AbstractContentEncoder
          org.apache.http.impl.nio.codecs.LengthDelimitedEncoder

All Implemented Interfaces:
  ContentEncoder, FileContentEncoder

    @NotThreadSafe
    public class LengthDelimitedEncoder

extends AbstractContentEncoder
implements FileContentEncoder

Content encoder that cuts off after a defined number of bytes. This class is used to send 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 a `FileChannel` to the underlying I/O session's channel whenever possible avoiding intermediate buffering in the session buffer.

Since:
  4.0

Field Summary

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

Constructor Summary
`LengthDelimitedEncoder(WritableByteChannel channel, SessionOutputBuffer buffer, HttpTransportMetricsImpl metrics, long contentLength)`

Method Summary
`String` `toString()`
`long` `transfer(FileChannel src, long position, long count)` Transfers a portion of entity content from the given file channel to the underlying network channel.
`int` `write(ByteBuffer src)` Writes a portion of entity content to the underlying channel.

Methods inherited from class org.apache.http.impl.nio.codecs.AbstractContentEncoder
`assertNotCompleted, complete, 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.ContentEncoder
`complete, isCompleted`

Constructor Detail

### LengthDelimitedEncoder

    public LengthDelimitedEncoder(WritableByteChannel channel,
                                  SessionOutputBuffer buffer,
                                  HttpTransportMetricsImpl metrics,
                                  long contentLength)

Method Detail

### write

    public int write(ByteBuffer src)
              throws IOException

  Description copied from interface: `ContentEncoder`
  Writes a portion of entity content to the underlying channel.

  Specified by:
    `write` in interface `ContentEncoder`
  Parameters:
    `src` - The buffer from which content is to be retrieved
  Returns:
    The number of bytes read, possibly zero
  Throws:
    `IOException` - if I/O error occurs while writing content

### transfer

    public long transfer(FileChannel src,
                         long position,
                         long count)
                  throws IOException

  Description copied from interface: `FileContentEncoder`
  Transfers a portion of entity content from the given file channel to the underlying network channel.

  Specified by:
    `transfer` in interface `FileContentEncoder`
  Parameters:
    `src` - the source FileChannel to transfer data from.
    `position` - The position within the file at which the transfer is to begin; must be non-negative
    `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.