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
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
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. |
LengthDelimitedEncoder
public LengthDelimitedEncoder(WritableByteChannel channel,
SessionOutputBuffer buffer,
HttpTransportMetricsImpl metrics,
long contentLength,
int fragementSizeHint)
- Parameters:
channel
- underlying channel.buffer
- session buffer.metrics
- transport metrics.contentLength
- content length.fragementSizeHint
- fragment size hint defining an minimal size of a fragment
that should be written out directly to the channel bypassing the session buffer.
Value 0
disables fragment buffering.- Since:
- 4.3
LengthDelimitedEncoder
public LengthDelimitedEncoder(WritableByteChannel channel,
SessionOutputBuffer buffer,
HttpTransportMetricsImpl metrics,
long contentLength)
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-negativecount
- 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
- if some I/O error occurs.
toString
public String toString()
- Overrides:
toString
in class Object
Copyright © 2005–2021 The Apache Software Foundation. All rights reserved.