Package org.jboss.netty.handler.stream
Class ChunkedStream
java.lang.Object
org.jboss.netty.handler.stream.ChunkedStream
- All Implemented Interfaces:
ChunkedInput
A
ChunkedInput
that fetches data from an InputStream
chunk by
chunk.
Please note that the InputStream
instance that feeds data into
ChunkedStream
must implement InputStream.available()
as
accurately as possible, rather than using the default implementation.
Otherwise, ChunkedStream
will generate many too small chunks or
block unnecessarily often.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final int
(package private) static final int
private final PushbackInputStream
private long
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a new instance that fetches data from the specified stream.ChunkedStream
(InputStream in, int chunkSize) Creates a new instance that fetches data from the specified stream. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Releases the resources associated with the stream.long
Returns the number of transferred bytes.boolean
Returnstrue
if and only if there is any data left in the stream.boolean
Returntrue
if and only if there is no data left in the stream and the stream has reached at its end.Fetches a chunked data from the stream.
-
Field Details
-
DEFAULT_CHUNK_SIZE
static final int DEFAULT_CHUNK_SIZE- See Also:
-
in
-
chunkSize
private final int chunkSize -
offset
private long offset
-
-
Constructor Details
-
ChunkedStream
Creates a new instance that fetches data from the specified stream. -
ChunkedStream
Creates a new instance that fetches data from the specified stream.- Parameters:
chunkSize
- the number of bytes to fetch on eachnextChunk()
call
-
-
Method Details
-
getTransferredBytes
public long getTransferredBytes()Returns the number of transferred bytes. -
hasNextChunk
Description copied from interface:ChunkedInput
Returnstrue
if and only if there is any data left in the stream. Please note thatfalse
does not necessarily mean that the stream has reached at its end. In a slow stream, the next chunk might be unavailable just momentarily.- Specified by:
hasNextChunk
in interfaceChunkedInput
- Throws:
Exception
-
isEndOfInput
Description copied from interface:ChunkedInput
Returntrue
if and only if there is no data left in the stream and the stream has reached at its end.- Specified by:
isEndOfInput
in interfaceChunkedInput
- Throws:
Exception
-
close
Description copied from interface:ChunkedInput
Releases the resources associated with the stream.- Specified by:
close
in interfaceChunkedInput
- Throws:
Exception
-
nextChunk
Description copied from interface:ChunkedInput
Fetches a chunked data from the stream. The returned chunk is usually aChannelBuffer
, but you could extend an existing implementation to convert theChannelBuffer
into a different type that your handler or encoder understands. Once this method returns the last chunk and thus the stream has reached at its end, any subsequentChunkedInput.isEndOfInput()
call must returnfalse
.- Specified by:
nextChunk
in interfaceChunkedInput
- Returns:
- the fetched chunk, which is usually
ChannelBuffer
.null
if there is no data left in the stream. Please note thatnull
does not necessarily mean that the stream has reached at its end. In a slow stream, the next chunk might be unavailable just momentarily. - Throws:
Exception
-