Class ExpandableBuffer

java.lang.Object
org.apache.http.nio.util.ExpandableBuffer
All Implemented Interfaces:
BufferInfo, BufferInfo
Direct Known Subclasses:
SessionInputBufferImpl, SessionOutputBufferImpl, SharedInputBuffer, SharedOutputBuffer, SimpleInputBuffer, SimpleOutputBuffer

public class ExpandableBuffer extends Object implements BufferInfo, BufferInfo
A buffer that expand its capacity on demand using ByteBufferAllocator interface. Internally, this class is backed by an instance of ByteBuffer.

This class is not thread safe.

Since:
4.0
  • Field Details

  • Constructor Details

    • ExpandableBuffer

      public ExpandableBuffer(int bufferSize, ByteBufferAllocator allocator)
      Allocates buffer of the given size using the given allocator.
      Parameters:
      bufferSize - the buffer size.
      allocator - allocator to be used to allocate ByteBuffers.
  • Method Details

    • getMode

      protected int getMode()
      Returns the current mode:

      INPUT_MODE: the buffer is in the input mode.

      OUTPUT_MODE: the buffer is in the output mode.

      Returns:
      current input/output mode.
    • setOutputMode

      protected void setOutputMode()
      Sets output mode. The buffer can now be read from.
    • setInputMode

      protected void setInputMode()
      Sets input mode. The buffer can now be written into.
    • expandCapacity

      private void expandCapacity(int capacity)
    • expand

      protected void expand() throws BufferOverflowException
      Expands buffer's capacity.
      Throws:
      BufferOverflowException - in case we get over the maximum allowed value
    • ensureCapacity

      protected void ensureCapacity(int requiredCapacity)
      Ensures the buffer can accommodate the required capacity.
    • capacity

      public int capacity()
      Returns the total capacity of this buffer.
      Specified by:
      capacity in interface BufferInfo
      Specified by:
      capacity in interface BufferInfo
      Returns:
      total capacity.
    • hasData

      public boolean hasData()
      Determines if the buffer contains data.
      Returns:
      true if there is data in the buffer, false otherwise.
    • length

      public int length()
      Returns the length of this buffer.
      Specified by:
      length in interface BufferInfo
      Specified by:
      length in interface BufferInfo
      Returns:
      buffer length.
    • available

      public int available()
      Returns available capacity of this buffer.
      Specified by:
      available in interface BufferInfo
      Specified by:
      available in interface BufferInfo
      Returns:
      buffer length.
    • clear

      protected void clear()
      Clears buffer.
    • toString

      public String toString()
      Overrides:
      toString in class Object