public class

ChunkedInputStream

extends InputStream
implements Hurryable
java.lang.Object
   ↳ java.io.InputStream
     ↳ sun.net.www.http.ChunkedInputStream

Class Overview

A 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.

Summary

Public Constructors
ChunkedInputStream(InputStream in, HttpClient hc, MessageHeader responses)
Creates a ChunkedInputStream and saves its arguments, for later use.
Public Methods
synchronized int available()
Returns the number of bytes that can be read from this input stream without blocking.
synchronized void close()
Close the stream by either returning the connection to the keep alive cache or closing the underlying stream.
synchronized boolean hurry()
Hurry the input stream by reading everything from the underlying stream.
synchronized int read()
See the general contract of the read method of InputStream.
synchronized int read(byte[] b, int off, int len)
Reads bytes from this stream into the specified byte array, starting at the given offset.
[Expand]
Inherited Methods
From class java.io.InputStream
From class java.lang.Object
From interface java.io.Closeable
From interface sun.net.www.http.Hurryable

Public Constructors

public ChunkedInputStream (InputStream in, HttpClient hc, MessageHeader responses)

Creates a ChunkedInputStream and saves its arguments, for later use.

Parameters
in the underlying input stream.
hc the HttpClient
responses the MessageHeader that should be populated with optional trailers.
Throws
IOException

Public Methods

public synchronized int available ()

Returns the number of bytes that can be read from this input stream without blocking.

Returns
  • the number of bytes that can be read from this input stream without blocking.
Throws
IOException if an I/O error occurs.
See Also

public synchronized void close ()

Close the stream by either returning the connection to the keep alive cache or closing the underlying stream.

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.

Throws
IOException if an I/O error occurs.

public synchronized boolean hurry ()

Hurry the input stream by reading everything from the underlying stream. If the last chunk (and optional trailers) can be read without blocking then the stream is considered hurried.

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 synchronized int read ()

See the general contract of the read method of InputStream.

Returns
  • the next byte of data, or -1 if the end of the stream is reached.
Throws
IOException if an I/O error occurs.
See Also

public synchronized int read (byte[] b, int off, int len)

Reads bytes from this stream into the specified byte array, starting at the given offset.

Parameters
b destination buffer.
off offset at which to start storing bytes.
len maximum number of bytes to read.
Returns
  • the number of bytes read, or -1 if the end of the stream has been reached.
Throws
IOException if an I/O error occurs.