public class LengthDelimitedDecoder extends AbstractContentDecoder implements FileContentDecoder
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.
Modifier and Type | Field and Description |
---|---|
private long |
contentLength |
private long |
len |
buffer, channel, completed, metrics
Constructor and Description |
---|
LengthDelimitedDecoder(ReadableByteChannel channel,
SessionInputBuffer buffer,
HttpTransportMetricsImpl metrics,
long contentLength) |
Modifier and Type | Method and Description |
---|---|
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.
|
fillBufferFromChannel, isCompleted, readFromChannel, readFromChannel
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
isCompleted
private final long contentLength
private long len
public LengthDelimitedDecoder(ReadableByteChannel channel, SessionInputBuffer buffer, HttpTransportMetricsImpl metrics, long contentLength)
public int read(ByteBuffer dst) throws IOException
ContentDecoder
read
in interface ContentDecoder
dst
- The buffer into which entity content is to be transferredIOException
- if I/O error occurs while reading contentpublic long transfer(FileChannel dst, long position, long count) throws IOException
FileContentDecoder
transfer
in interface FileContentDecoder
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 filecount
- The maximum number of bytes to be transferred; must be
non-negativeIOException
- if some I/O error occurs.WebARTS Library Licensed Under the GNU - General Public License. Other Libraries licensed under their respective Open Source Licenses