public abstract class

AbstractSessionInputBuffer

extends Object
implements BufferInfo SessionInputBuffer
java.lang.Object
   ↳ org.apache.http.impl.io.AbstractSessionInputBuffer
Known Direct Subclasses

Class Overview

Abstract base class for session input buffers that stream data from an arbitrary InputStream. This class buffers input data in an internal byte array for optimal input performance.

readLine(CharArrayBuffer) and readLine() methods of this class treat a lone LF as valid line delimiters in addition to CR-LF required by the HTTP specification.

The following parameters can be used to customize the behavior of this class:

Summary

Public Constructors
AbstractSessionInputBuffer()
Public Methods
int available()
Returns available space in the buffer.
int capacity()
Returns total capacity of the buffer
HttpTransportMetrics getMetrics()
Returns HttpTransportMetrics for this session buffer.
int length()
Return length data stored in the buffer
int read()
Reads the next byte of data from this session buffer.
int read(byte[] b, int off, int len)
Reads up to len bytes of data from the session buffer into an array of bytes.
int read(byte[] b)
Reads some number of bytes from the session buffer and stores them into the buffer array b.
int readLine(CharArrayBuffer charbuffer)
Reads a complete line of characters up to a line delimiter from this session buffer into the given line buffer.
String readLine()
Reads a complete line of characters up to a line delimiter from this session buffer.
Protected Methods
HttpTransportMetricsImpl createTransportMetrics()
int fillBuffer()
boolean hasBufferedData()
void init(InputStream instream, int buffersize, HttpParams params)
Initializes this session input buffer.
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.apache.http.io.BufferInfo
From interface org.apache.http.io.SessionInputBuffer

Public Constructors

public AbstractSessionInputBuffer ()

Public Methods

public int available ()

Returns available space in the buffer.

Returns
  • available space.

public int capacity ()

Returns total capacity of the buffer

Returns
  • total capacity

public HttpTransportMetrics getMetrics ()

Returns HttpTransportMetrics for this session buffer.

Returns
  • transport metrics.

public int length ()

Return length data stored in the buffer

Returns
  • data length

public int read ()

Reads the next byte of data from this session buffer. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

Returns
  • the next byte of data, or -1 if the end of the stream is reached.
Throws
IOException

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

Reads up to len bytes of data from the session buffer into an array of bytes. An attempt is made to read as many as len bytes, but a smaller number may be read, possibly zero. The number of bytes actually read is returned as an integer.

This method blocks until input data is available, end of file is detected, or an exception is thrown.

If off is negative, or len is negative, or off+len is greater than the length of the array b, then an IndexOutOfBoundsException is thrown.

Parameters
b the buffer into which the data is read.
off the start offset in array b at which the data is written.
len the maximum number of bytes to read.
Returns
  • the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.
Throws
IOException

public int read (byte[] b)

Reads some number of bytes from the session buffer and stores them into the buffer array b. The number of bytes actually read is returned as an integer. This method blocks until input data is available, end of file is detected, or an exception is thrown.

Parameters
b the buffer into which the data is read.
Returns
  • the total number of bytes read into the buffer, or -1 is there is no more data because the end of the stream has been reached.
Throws
IOException

public int readLine (CharArrayBuffer charbuffer)

Reads a complete line of characters up to a line delimiter from this session buffer into the given line buffer. The number of chars actually read is returned as an integer. The line delimiter itself is discarded. If no char is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, end of file is detected, or an exception is thrown.

This method treats a lone LF as a valid line delimiters in addition to CR-LF required by the HTTP specification.

Parameters
charbuffer the line buffer.
Returns
  • one line of characters
Throws
IOException if an I/O error occurs.

public String readLine ()

Reads a complete line of characters up to a line delimiter from this session buffer. The line delimiter itself is discarded. If no char is available because the end of the stream has been reached, null is returned. This method blocks until input data is available, end of file is detected, or an exception is thrown.

The choice of a char encoding and line delimiter sequence is up to the specific implementations of this interface.

Returns
  • HTTP line as a string
Throws
IOException

Protected Methods

protected HttpTransportMetricsImpl createTransportMetrics ()

protected int fillBuffer ()

Throws
IOException

protected boolean hasBufferedData ()

protected void init (InputStream instream, int buffersize, HttpParams params)

Initializes this session input buffer.

Parameters
instream the source input stream.
buffersize the size of the internal buffer.
params HTTP parameters.