org.apache.hc.core5.http.impl.io

## Class SessionOutputBufferImpl

- java.lang.Object
- - org.apache.hc.core5.http.impl.io.SessionOutputBufferImpl

- All Implemented Interfaces:
    SessionOutputBuffer

      public class SessionOutputBufferImpl
      extends Object
      implements SessionOutputBuffer

  Abstract base class for session output buffers that stream data to an arbitrary `OutputStream`. This class buffers small chunks of output data in an internal byte array for optimal output performance.

  `writeLine(CharArrayBuffer, OutputStream)` method of this class uses CR-LF as a line delimiter.

  Since:
    4.3

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SessionOutputBufferImpl(BasicHttpTransportMetrics metrics, int bufferSize, int fragmentSizeHint, CharsetEncoder charEncoder)` Creates new instance of SessionOutputBufferImpl.
    `SessionOutputBufferImpl(int bufferSize)`
    `SessionOutputBufferImpl(int bufferSize, CharsetEncoder encoder)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `available()` Returns available space in the buffer.
    `int` | `capacity()` Returns total capacity of the buffer
    `void` | `flush(OutputStream outputStream)` Flushes this session buffer and forces any buffered output bytes to be written out.
    `HttpTransportMetrics` | `getMetrics()` Returns `HttpTransportMetrics` for this session buffer.
    `int` | `length()` Return length data stored in the buffer
    `void` | `write(byte[] b, int off, int len, OutputStream outputStream)` Writes `len` bytes from the specified byte array starting at offset `off` to this session buffer.
    `void` | `write(byte[] b, OutputStream outputStream)` Writes `b.length` bytes from the specified byte array to this session buffer.
    `void` | `write(int b, OutputStream outputStream)` Writes the specified byte to this session buffer.
    `void` | `writeLine(CharArrayBuffer charbuffer, OutputStream outputStream)` Writes characters from the specified char array followed by a line delimiter to this session buffer.

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

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

- - ### Constructor Detail

    - #### SessionOutputBufferImpl

          public SessionOutputBufferImpl(BasicHttpTransportMetrics metrics,
                                         int bufferSize,
                                         int fragmentSizeHint,
                                         CharsetEncoder charEncoder)

      Creates new instance of SessionOutputBufferImpl.
      Parameters:
        `metrics` - HTTP transport metrics.
        `bufferSize` - buffer size. Must be a positive number.
        `fragmentSizeHint` - fragment size hint defining a minimal size of a fragment that should be written out directly to the socket bypassing the session buffer. Value `0` disables fragment buffering.
        `charEncoder` - charEncoder to be used for encoding HTTP protocol elements. If `null` simple type cast will be used for char to byte conversion.

    - #### SessionOutputBufferImpl

          public SessionOutputBufferImpl(int bufferSize)

    - #### SessionOutputBufferImpl

          public SessionOutputBufferImpl(int bufferSize,
                                         CharsetEncoder encoder)

  - ### Method Detail

    - #### capacity

          public int capacity()

      Description copied from interface: `SessionOutputBuffer`
      Returns total capacity of the buffer
      Specified by:
        `capacity` in interface `SessionOutputBuffer`
      Returns:
        total capacity

    - #### length

          public int length()

      Description copied from interface: `SessionOutputBuffer`
      Return length data stored in the buffer
      Specified by:
        `length` in interface `SessionOutputBuffer`
      Returns:
        data length

    - #### available

          public int available()

      Description copied from interface: `SessionOutputBuffer`
      Returns available space in the buffer.
      Specified by:
        `available` in interface `SessionOutputBuffer`
      Returns:
        available space.

    - #### flush

          public void flush(OutputStream outputStream)
                     throws IOException

      Description copied from interface: `SessionOutputBuffer`
      Flushes this session buffer and forces any buffered output bytes to be written out. The general contract of `flush` is that calling it is an indication that, if any bytes previously written have been buffered by the implementation of the output stream, such bytes should immediately be written to their intended destination.
      Specified by:
        `flush` in interface `SessionOutputBuffer`
      Throws:
        `IOException` - if an I/O error occurs.

    - #### write

          public void write(byte[] b,
                            int off,
                            int len,
                            OutputStream outputStream)
                     throws IOException

      Description copied from interface: `SessionOutputBuffer`
      Writes `len` bytes from the specified byte array starting at offset `off` to this session buffer.

      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:
        `write` in interface `SessionOutputBuffer`
      Parameters:
        `b` - the data.
        `off` - the start offset in the data.
        `len` - the number of bytes to write.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### write

          public void write(byte[] b,
                            OutputStream outputStream)
                     throws IOException

      Description copied from interface: `SessionOutputBuffer`
      Writes `b.length` bytes from the specified byte array to this session buffer.
      Specified by:
        `write` in interface `SessionOutputBuffer`
      Parameters:
        `b` - the data.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### write

          public void write(int b,
                            OutputStream outputStream)
                     throws IOException

      Description copied from interface: `SessionOutputBuffer`
      Writes the specified byte to this session buffer.
      Specified by:
        `write` in interface `SessionOutputBuffer`
      Parameters:
        `b` - the `byte`.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### writeLine

          public void writeLine(CharArrayBuffer charbuffer,
                                OutputStream outputStream)
                         throws IOException

      Writes characters from the specified char array followed by a line delimiter to this session buffer.

      This method uses CR-LF as a line delimiter.

      Specified by:
        `writeLine` in interface `SessionOutputBuffer`
      Parameters:
        `charbuffer` - the buffer containing chars of the line.
      Throws:
        `IOException` - if an I/O error occurs.

    - #### getMetrics

          public HttpTransportMetrics getMetrics()

      Description copied from interface: `SessionOutputBuffer`
      Returns `HttpTransportMetrics` for this session buffer.
      Specified by:
        `getMetrics` in interface `SessionOutputBuffer`
      Returns:
        transport metrics.

Copyright © 2005–2021 The Apache Software Foundation. All rights reserved.