Package org.apache.http.impl.nio.codecs
Class IdentityDecoder
- java.lang.Object
-
- org.apache.http.impl.nio.codecs.AbstractContentDecoder
-
- org.apache.http.impl.nio.codecs.IdentityDecoder
-
- All Implemented Interfaces:
ContentDecoder,FileContentDecoder
public class IdentityDecoder extends AbstractContentDecoder implements FileContentDecoder
Content decoder that reads data without any transformation. The end of the content entity is delineated by closing the underlying connection (EOF condition). Entities transferred using this input stream can be of unlimited length.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
-
-
Constructor Summary
Constructors Constructor Description IdentityDecoder(java.nio.channels.ReadableByteChannel channel, SessionInputBuffer buffer, HttpTransportMetricsImpl metrics)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intread(java.nio.ByteBuffer dst)Reads a portion of content from the underlying channelvoidsetCompleted(boolean completed)Sets the completed status of this decoder.java.lang.StringtoString()longtransfer(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 org.apache.http.impl.nio.codecs.AbstractContentDecoder
isCompleted
-
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.http.nio.ContentDecoder
isCompleted
-
-
-
-
Constructor Detail
-
IdentityDecoder
public IdentityDecoder(java.nio.channels.ReadableByteChannel channel, SessionInputBuffer buffer, HttpTransportMetricsImpl metrics)
-
-
Method Detail
-
setCompleted
public void setCompleted(boolean completed)
Sets the completed status of this decoder. Normally this is not necessary (the decoder will automatically complete when the underlying channel returns EOF). It is useful to mark the decoder as completed if you have some other means to know all the necessary data has been read and want to reuse the underlying connection for more messages.
-
read
public int read(java.nio.ByteBuffer dst) throws java.io.IOExceptionDescription copied from interface:ContentDecoderReads a portion of content from the underlying channel- Specified by:
readin interfaceContentDecoder- 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.IOExceptionDescription copied from interface:FileContentDecoderTransfers 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:
transferin interfaceFileContentDecoder- 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 filecount- 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:
toStringin classjava.lang.Object
-
-