org.apache.http.impl.nio.reactor

## Class SessionOutputBufferImpl

- java.lang.Object
- - org.apache.http.nio.util.ExpandableBuffer
  - - org.apache.http.impl.nio.reactor.SessionOutputBufferImpl

All Implemented Interfaces:
  SessionOutputBuffer, BufferInfo

    @NotThreadSafe
    public class SessionOutputBufferImpl
    extends ExpandableBuffer
    implements SessionOutputBuffer

Default implementation of `SessionOutputBuffer` based on the `ExpandableBuffer` class.

Since:
  4.0

### Field Summary

### Fields inherited from class org.apache.http.nio.util.ExpandableBuffer

`buffer, INPUT_MODE, OUTPUT_MODE`

### Constructor Summary

Constructors
Constructor and Description
`SessionOutputBufferImpl(int buffersize)`
`SessionOutputBufferImpl(int buffersize, int linebuffersize)`
`SessionOutputBufferImpl(int buffersize, int lineBuffersize, ByteBufferAllocator allocator, HttpParams params)` Deprecated. (4.3) use `SessionOutputBufferImpl(int, int, CharsetEncoder, ByteBufferAllocator)`
`SessionOutputBufferImpl(int buffersize, int linebuffersize, Charset charset)`
`SessionOutputBufferImpl(int buffersize, int lineBuffersize, CharsetEncoder charencoder, ByteBufferAllocator allocator)` Creates SessionOutputBufferImpl instance.
`SessionOutputBufferImpl(int buffersize, int linebuffersize, HttpParams params)` Deprecated. (4.3) use `SessionOutputBufferImpl(int, int, Charset)`

### Method Summary

Methods
`int` `flush(WritableByteChannel channel)` Makes an attempt to flush the content of this buffer to the given destination `WritableByteChannel`.
`void` `reset(HttpParams params)`
`void` `write(ByteBuffer src)` Copies content of the source buffer into this buffer.
`void` `write(ReadableByteChannel src)` Reads a sequence of bytes from the source channel into this buffer.
`void` `writeLine(CharArrayBuffer linebuffer)` Copies content of the source buffer into this buffer as one line of text including a line delimiter.
`void` `writeLine(String s)` Copies content of the given string into this buffer as one line of text including a line delimiter.

### Methods inherited from class org.apache.http.nio.util.ExpandableBuffer

`available, capacity, clear, ensureCapacity, expand, getMode, hasData, length, setInputMode, setOutputMode, toString`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.apache.http.nio.reactor.SessionOutputBuffer

`hasData, length`

### Constructor Detail

#### SessionOutputBufferImpl

    public SessionOutputBufferImpl(int buffersize,
                           int lineBuffersize,
                           CharsetEncoder charencoder,
                           ByteBufferAllocator allocator)

Creates SessionOutputBufferImpl instance.

Parameters:
  `buffersize` - input buffer size
  `lineBuffersize` - buffer size for line operations. Has effect only if `charencoder` is not `null`.
  `charencoder` - charencoder to be used for encoding HTTP protocol elements. If `null` simple type cast will be used for char to byte conversion.
  `allocator` - memory allocator. If `null` `HeapByteBufferAllocator.INSTANCE` will be used.
Since:
  4.3

#### SessionOutputBufferImpl

    @Deprecated
    public SessionOutputBufferImpl(int buffersize,
                                      int lineBuffersize,
                                      ByteBufferAllocator allocator,
                                      HttpParams params)

Deprecated. (4.3) use `SessionOutputBufferImpl(int, int, CharsetEncoder, ByteBufferAllocator)`

#### SessionOutputBufferImpl

    @Deprecated
    public SessionOutputBufferImpl(int buffersize,
                                      int linebuffersize,
                                      HttpParams params)

Deprecated. (4.3) use `SessionOutputBufferImpl(int, int, Charset)`

#### SessionOutputBufferImpl

    public SessionOutputBufferImpl(int buffersize)

Since:
  4.3

#### SessionOutputBufferImpl

    public SessionOutputBufferImpl(int buffersize,
                           int linebuffersize,
                           Charset charset)

Since:
  4.3

#### SessionOutputBufferImpl

    public SessionOutputBufferImpl(int buffersize,
                           int linebuffersize)

Since:
  4.3

### Method Detail

#### reset

    public void reset(HttpParams params)

#### flush

    public int flush(WritableByteChannel channel)
              throws IOException

Description copied from interface: `SessionOutputBuffer`
Makes an attempt to flush the content of this buffer to the given destination `WritableByteChannel`.

Specified by:
  `flush` in interface `SessionOutputBuffer`
Parameters:
  `channel` - the destination channel.
Returns:
  The number of bytes written, possibly zero.
Throws:
  `IOException` - in case of an I/O error.

#### write

    public void write(ByteBuffer src)

Description copied from interface: `SessionOutputBuffer`
Copies content of the source buffer into this buffer. The capacity of the destination will be expanded in order to accommodate the entire content of the source buffer.

Specified by:
  `write` in interface `SessionOutputBuffer`
Parameters:
  `src` - the source buffer.

#### write

    public void write(ReadableByteChannel src)
               throws IOException

Description copied from interface: `SessionOutputBuffer`
Reads a sequence of bytes from the source channel into this buffer.

Specified by:
  `write` in interface `SessionOutputBuffer`
Parameters:
  `src` - the source channel.
Throws:
  `IOException`

#### writeLine

    public void writeLine(CharArrayBuffer linebuffer)
                   throws CharacterCodingException

Description copied from interface: `SessionOutputBuffer`
Copies content of the source buffer into this buffer as one line of text including a line delimiter. The capacity of the destination will be expanded in order to accommodate the entire content of the source buffer.

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

Specified by:
  `writeLine` in interface `SessionOutputBuffer`
Parameters:
  `linebuffer` - the source buffer.
Throws:
  `CharacterCodingException`

#### writeLine

    public void writeLine(String s)
                   throws IOException

Description copied from interface: `SessionOutputBuffer`
Copies content of the given string into this buffer as one line of text including a line delimiter. The capacity of the destination will be expanded in order to accommodate the entire string.

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

Specified by:
  `writeLine` in interface `SessionOutputBuffer`
Parameters:
  `s` - the string.
Throws:
  `IOException`