public class ChunkedInputStream extends InputStream implements Hurryable
ChunkedInputStream provides a stream for reading a body of a http message that can be sent as a series
of chunks, each with its own size indicator. Optionally the last chunk can be followed by trailers containing
entity-header fields.
A ChunkedInputStream is also Hurryable so it can be hurried to the end of the stream if the
bytes are available on the underlying stream.
| Constructor and Description |
|---|
ChunkedInputStream(InputStream in,
HttpClient hc,
MessageHeader responses)
Creates a
ChunkedInputStream and saves its arguments, for later use. |
| Modifier and Type | Method and Description |
|---|---|
int |
available()
Returns the number of bytes that can be read from this input stream without blocking.
|
void |
close()
Close the stream by either returning the connection to the keep alive cache or closing the underlying stream.
|
boolean |
hurry()
Hurry the input stream by reading everything from the underlying stream.
|
int |
read()
See the general contract of the
read method of InputStream. |
int |
read(byte[] b,
int off,
int len)
Reads bytes from this stream into the specified byte array, starting at the given offset.
|
mark, markSupported, read, reset, skippublic ChunkedInputStream(InputStream in, HttpClient hc, MessageHeader responses) throws IOException
ChunkedInputStream and saves its arguments, for later use.in - the underlying input stream.hc - the HttpClientresponses - the MessageHeader that should be populated with optional trailers.IOExceptionpublic int available()
throws IOException
available in class InputStreamIOException - if an I/O error occurs.FilterInputStream.inpublic void close()
throws IOException
If the chunked response hasn't been completely read we try to "hurry" to the end of the response. If this is possible (without blocking) then the connection can be returned to the keep alive cache.
close in interface Closeableclose in interface AutoCloseableclose in class InputStreamIOException - if an I/O error occurs.public boolean hurry()
Note that if an error has occured or we can't get to last chunk without blocking then this stream can't be hurried and should be closed.
public int read()
throws IOException
read method of InputStream.read in class InputStream-1 if the end of the stream is reached.IOException - if an I/O error occurs.FilterInputStream.inpublic int read(byte[] b,
int off,
int len)
throws IOException
read in class InputStreamb - destination buffer.off - offset at which to start storing bytes.len - maximum number of bytes to read.-1 if the end of the stream has been reached.IOException - if an I/O error occurs.InputStream.read()