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
    int
    void
     
    void
    boolean
    int
    int
    produceContent(org.apache.http.nio.ContentEncoder encoder)
    Deprecated.
    int
    produceContent(org.apache.http.nio.ContentEncoder encoder, org.apache.http.nio.IOControl ioctrl)
     
    void
    void
     
    void
    write(byte[] b)
     
    void
    write(byte[] b, int off, int len)
    void
    write(int b)
    void

    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