## org.apache.http.impl.io
Class AbstractSessionInputBuffer

    java.lang.Object
      org.apache.http.impl.io.AbstractSessionInputBuffer

All Implemented Interfaces:
  BufferInfo, SessionInputBuffer

Direct Known Subclasses:
  SocketInputBuffer

    @NotThreadSafe
    public abstract class AbstractSessionInputBuffer

extends Object
implements SessionInputBuffer, BufferInfo

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:

- `CoreProtocolPNames.HTTP_ELEMENT_CHARSET`
- `CoreConnectionPNames.MAX_LINE_LENGTH`
- `CoreConnectionPNames.MIN_CHUNK_LIMIT`

Since:
  4.0

Constructor Summary
`AbstractSessionInputBuffer()`

Method Summary
`int` `available()` Returns available space in the buffer.
`int` `capacity()` Returns total capacity of the buffer
`protected HttpTransportMetricsImpl` `createTransportMetrics()`
`protected int` `fillBuffer()`
`HttpTransportMetrics` `getMetrics()` Returns `HttpTransportMetrics` for this session buffer.
`protected boolean` `hasBufferedData()`
`protected void` `init(InputStream instream, int buffersize, HttpParams params)` Initializes this session input 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)` Reads some number of bytes from the session buffer and stores them into the buffer array `b`.
`int` `read(byte[] b, int off, int len)` Reads up to `len` bytes of data from the session buffer into an array of bytes.
`String` `readLine()` Reads a complete line of characters up to a line delimiter from this session buffer.
`int` `readLine(CharArrayBuffer charbuffer)` Reads a complete line of characters up to a line delimiter from this session buffer into the given line buffer.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.apache.http.io.SessionInputBuffer
`isDataAvailable`

Constructor Detail

### AbstractSessionInputBuffer

    public AbstractSessionInputBuffer()

Method Detail

### init

    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.

### createTransportMetrics

    protected HttpTransportMetricsImpl createTransportMetrics()

  Since:
    4.1

### capacity

    public int capacity()

  Description copied from interface: `BufferInfo`
  Returns total capacity of the buffer

  Specified by:
    `capacity` in interface `BufferInfo`
  Returns:
    total capacity
  Since:
    4.1

### length

    public int length()

  Description copied from interface: `BufferInfo`
  Return length data stored in the buffer

  Specified by:
    `length` in interface `BufferInfo`
  Returns:
    data length
  Since:
    4.1

### available

    public int available()

  Description copied from interface: `BufferInfo`
  Returns available space in the buffer.

  Specified by:
    `available` in interface `BufferInfo`
  Returns:
    available space.
  Since:
    4.1

### fillBuffer

    protected int fillBuffer()
                      throws IOException

  Throws:
    `IOException`

### hasBufferedData

    protected boolean hasBufferedData()

### read

    public int read()
             throws IOException

  Description copied from interface: `SessionInputBuffer`
  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.

  Specified by:
    `read` in interface `SessionInputBuffer`
  Returns:
    the next byte of data, or `-1` if the end of the stream is reached.
  Throws:
    `IOException` - if an I/O error occurs.

### read

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

  Description copied from interface: `SessionInputBuffer`
  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.

  Specified by:
    `read` in interface `SessionInputBuffer`
  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` - if an I/O error occurs.

### read

    public int read(byte[] b)
             throws IOException

  Description copied from interface: `SessionInputBuffer`
  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.

  Specified by:
    `read` in interface `SessionInputBuffer`
  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` - if an I/O error occurs.

### readLine

    public int readLine(CharArrayBuffer charbuffer)
                 throws IOException

  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.

  Specified by:
    `readLine` in interface `SessionInputBuffer`
  Parameters:
    `charbuffer` - the line buffer.
  Returns:
    one line of characters
  Throws:
    `IOException` - if an I/O error occurs.

### readLine

    public String readLine()
                    throws IOException

  Description copied from interface: `SessionInputBuffer`
  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.

  Specified by:
    `readLine` in interface `SessionInputBuffer`
  Returns:
    HTTP line as a string
  Throws:
    `IOException` - if an I/O error occurs.

### getMetrics

    public HttpTransportMetrics getMetrics()

  Description copied from interface: `SessionInputBuffer`
  Returns `HttpTransportMetrics` for this session buffer.

  Specified by:
    `getMetrics` in interface `SessionInputBuffer`
  Returns:
    transport metrics.

Copyright © 2005-2013 The Apache Software Foundation. All Rights Reserved.