Package org.apache.synapse.transport.nhttp

# Class NhttpSharedOutputBuffer

java.lang.Object
org.apache.http.nio.util.ExpandableBuffer
org.apache.synapse.transport.nhttp.NhttpSharedOutputBuffer

All Implemented Interfaces:
  `org.apache.http.io.BufferInfo`, `org.apache.http.nio.util.BufferInfo`, `org.apache.http.nio.util.ContentOutputBuffer`

@Contract(threading=SAFE_CONDITIONAL) public class NhttpSharedOutputBuffer extends org.apache.http.nio.util.ExpandableBuffer implements org.apache.http.nio.util.ContentOutputBuffer
Implementation of the `ContentOutputBuffer` interface that can be shared by multiple threads, usually the I/O dispatch of an I/O reactor and a worker thread.

The I/O dispatch thread is expected to transfer data from the buffer to `ContentEncoder` by calling `produceContent(ContentEncoder)`.

The worker thread is expected to write data to the buffer by calling `write(int)`, `write(byte[], int, int)` or `writeCompleted()`

In case of an abnormal situation or when no longer needed the buffer must be shut down using `shutdown()` method. Please note that `SharedOutputBuffer` class was copied here renamed as NhttpSharedOutputBuffer from httpcore-nio in order to fix https://github.com/wso2/product-ei/issues/1367, without having to do an API change in httpcore-nio component.

- ## Field Summary

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

  `buffer, INPUT_MODE, OUTPUT_MODE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `NhttpSharedOutputBuffer(int buffersize)`
  `NhttpSharedOutputBuffer(int buffersize, org.apache.http.nio.IOControl ioctrl, org.apache.http.nio.util.ByteBufferAllocator allocator)`
  Deprecated.
  `NhttpSharedOutputBuffer(int buffersize, org.apache.http.nio.IOControl ioctrl, org.apache.http.nio.util.ByteBufferAllocator allocator, int timeout)`
  `NhttpSharedOutputBuffer(int buffersize, org.apache.http.nio.util.ByteBufferAllocator allocator)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `available()`
  `int`
  `capacity()`
  `void`
  `close()`
  `void`
  `flush()`
  `boolean`
  `hasData()`
  `int`
  `length()`
  `int`
  `produceContent(org.apache.http.nio.ContentEncoder encoder)`
  Deprecated.
  `int`
  `produceContent(org.apache.http.nio.ContentEncoder encoder, org.apache.http.nio.IOControl ioctrl)`
  `void`
  `reset()`
  `void`
  `shutdown()`
  `void`
  `write(byte[] b)`
  `void`
  `write(byte[] b, int off, int len)`
  `void`
  `write(int b)`
  `void`
  `writeCompleted()`

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

  `clear, ensureCapacity, expand, getMode, setInputMode, setOutputMode, toString`

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

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

- ## Constructor Details

  - ### NhttpSharedOutputBuffer

    public NhttpSharedOutputBuffer(int buffersize, org.apache.http.nio.IOControl ioctrl, org.apache.http.nio.util.ByteBufferAllocator allocator, int timeout)

  - ### NhttpSharedOutputBuffer

    @Deprecated public NhttpSharedOutputBuffer(int buffersize, org.apache.http.nio.IOControl ioctrl, org.apache.http.nio.util.ByteBufferAllocator allocator)
    Deprecated.

  - ### NhttpSharedOutputBuffer

    public NhttpSharedOutputBuffer(int buffersize, org.apache.http.nio.util.ByteBufferAllocator allocator)

  - ### NhttpSharedOutputBuffer

    public NhttpSharedOutputBuffer(int buffersize)

- ## Method Details

  - ### reset

    public void reset()
    Specified by:
      `reset` in interface `org.apache.http.nio.util.ContentOutputBuffer`

  - ### hasData

    public boolean hasData()
    Overrides:
      `hasData` in class `org.apache.http.nio.util.ExpandableBuffer`

  - ### available

    public int available()
    Specified by:
      `available` in interface `org.apache.http.io.BufferInfo`
    Specified by:
      `available` in interface `org.apache.http.nio.util.BufferInfo`
    Overrides:
      `available` in class `org.apache.http.nio.util.ExpandableBuffer`

  - ### capacity

    public int capacity()
    Specified by:
      `capacity` in interface `org.apache.http.io.BufferInfo`
    Specified by:
      `capacity` in interface `org.apache.http.nio.util.BufferInfo`
    Overrides:
      `capacity` in class `org.apache.http.nio.util.ExpandableBuffer`

  - ### length

    public int length()
    Specified by:
      `length` in interface `org.apache.http.io.BufferInfo`
    Specified by:
      `length` in interface `org.apache.http.nio.util.BufferInfo`
    Overrides:
      `length` in class `org.apache.http.nio.util.ExpandableBuffer`

  - ### produceContent

    @Deprecated public int produceContent(org.apache.http.nio.ContentEncoder encoder) throws IOException
    Deprecated.
    Specified by:
      `produceContent` in interface `org.apache.http.nio.util.ContentOutputBuffer`
    Throws:
      `IOException`

  - ### produceContent

    public int produceContent(org.apache.http.nio.ContentEncoder encoder, org.apache.http.nio.IOControl ioctrl) throws IOException
    Throws:
      `IOException`

  - ### close

    public void close()

  - ### shutdown

    public void shutdown()

  - ### write

    public void write(byte[] b, int off, int len) throws IOException
    Specified by:
      `write` in interface `org.apache.http.nio.util.ContentOutputBuffer`
    Throws:
      `IOException`

  - ### write

    public void write(byte[] b) throws IOException
    Throws:
      `IOException`

  - ### write

    public void write(int b) throws IOException
    Specified by:
      `write` in interface `org.apache.http.nio.util.ContentOutputBuffer`
    Throws:
      `IOException`

  - ### flush

    public void flush() throws IOException
    Specified by:
      `flush` in interface `org.apache.http.nio.util.ContentOutputBuffer`
    Throws:
      `IOException`

  - ### writeCompleted

    public void writeCompleted() throws IOException
    Specified by:
      `writeCompleted` in interface `org.apache.http.nio.util.ContentOutputBuffer`
    Throws:
      `IOException`