Class SharedInputBuffer

java.lang.Object
org.apache.http.nio.util.ExpandableBuffer
org.apache.http.nio.util.SharedInputBuffer
All Implemented Interfaces:
BufferInfo, BufferInfo, ContentInputBuffer

@Contract(threading=SAFE_CONDITIONAL) public class SharedInputBuffer extends ExpandableBuffer implements ContentInputBuffer
Implementation of the ContentInputBuffer 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 expect to transfer data from ContentDecoder to the buffer by calling consumeContent(ContentDecoder).

The worker thread is expected to read the data from the buffer by calling read() or read(byte[], int, int) methods.

In case of an abnormal situation or when no longer needed the buffer must be shut down using shutdown() method.

Since:
4.0
  • Constructor Details

  • Method Details

    • reset

      public void reset()
      Description copied from interface: ContentInputBuffer
      Resets the buffer by clearing its state and stored content.
      Specified by:
      reset in interface ContentInputBuffer
    • consumeContent

      @Deprecated public int consumeContent(ContentDecoder decoder) throws IOException
      Description copied from interface: ContentInputBuffer
      Reads content from the given ContentDecoder and stores it in this buffer.
      Specified by:
      consumeContent in interface ContentInputBuffer
      Parameters:
      decoder - the content decoder.
      Returns:
      number of bytes read.
      Throws:
      IOException - in case of an I/O error.
    • consumeContent

      public int consumeContent(ContentDecoder decoder, IOControl ioctrl) throws IOException
      Throws:
      IOException
      Since:
      4.3
    • hasData

      public boolean hasData()
      Description copied from class: ExpandableBuffer
      Determines if the buffer contains data.
      Overrides:
      hasData in class ExpandableBuffer
      Returns:
      true if there is data in the buffer, false otherwise.
    • available

      public int available()
      Description copied from class: ExpandableBuffer
      Returns available capacity of this buffer.
      Specified by:
      available in interface BufferInfo
      Specified by:
      available in interface BufferInfo
      Overrides:
      available in class ExpandableBuffer
      Returns:
      buffer length.
    • capacity

      public int capacity()
      Description copied from class: ExpandableBuffer
      Returns the total capacity of this buffer.
      Specified by:
      capacity in interface BufferInfo
      Specified by:
      capacity in interface BufferInfo
      Overrides:
      capacity in class ExpandableBuffer
      Returns:
      total capacity.
    • length

      public int length()
      Description copied from class: ExpandableBuffer
      Returns the length of this buffer.
      Specified by:
      length in interface BufferInfo
      Specified by:
      length in interface BufferInfo
      Overrides:
      length in class ExpandableBuffer
      Returns:
      buffer length.
    • close

      public void close()
    • shutdown

      public void shutdown()
    • read

      public int read() throws IOException
      Description copied from interface: ContentInputBuffer
      Reads one byte from this buffer. If the buffer is empty this method can throw a runtime exception. The exact type of runtime exception thrown by this method depends on implementation. This method returns -1 if the end of content stream has been reached.
      Specified by:
      read in interface ContentInputBuffer
      Returns:
      one byte
      Throws:
      IOException
    • read

      public int read(byte[] b, int off, int len) throws IOException
      Description copied from interface: ContentInputBuffer
      Reads up to len bytes of data from this buffer into an array of bytes. The exact number of bytes read depends how many bytes are stored in the buffer.

      If off is negative, or len is negative, or off+len is greater than the length of the array b, this method can throw a runtime exception. The exact type of runtime exception thrown by this method depends on implementation. This method returns -1 if the end of content stream has been reached.

      Specified by:
      read in interface ContentInputBuffer
      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
      Throws:
      IOException