Http11InputBuffer (Apache Tomcat 11.0.25 API Documentation)
Description: declaration: package: org.apache.coyote.http11, class: Http11InputBuffer

# Class Http11InputBuffer

java.lang.Object
org.apache.coyote.http11.Http11InputBuffer

All Implemented Interfaces:
  `InputBuffer, HttpHeaderParser.HeaderDataSource, ApplicationBufferHandler`

public class Http11InputBuffer extends Object implements InputBuffer, ApplicationBufferHandler, HttpHeaderParser.HeaderDataSource
InputBuffer for HTTP that provides request header parsing as well as transfer encoding.

- ## Field Summary

  ### Fields inherited from interface ApplicationBufferHandler

  `EMPTY, EMPTY_BUFFER`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Http11InputBuffer(Request request, int headerBufferSize, HttpParser httpParser)`
  Constructs a new Http11InputBuffer.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `available()`
  Obtain an estimate of the number of bytes that can be read without blocking.
  `int`
  `doRead(ApplicationBufferHandler handler)`
  Read from the input stream into the ByteBuffer provided by the ApplicationBufferHandler.
  `void`
  `expand(int size)`
  Expand the byte buffer to at least the given size.
  `boolean`
  `fillHeaderBuffer()`
  Read more data into the header buffer.
  `ByteBuffer`
  `getByteBuffer()`
  Returns the current byte buffer.
  `ByteBuffer`
  `getHeaderByteBuffer()`
  Obtain a reference to the buffer containing the header data.
  `void`
  `setByteBuffer(ByteBuffer buffer)`
  Set the byte buffer.

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### Http11InputBuffer

    public Http11InputBuffer(Request request, int headerBufferSize, HttpParser httpParser)
    Constructs a new Http11InputBuffer.
    Parameters:
      `request` - the Coyote request
      `headerBufferSize` - the maximum size of the header buffer
      `httpParser` - the HTTP parser to use

- ## Method Details

  - ### doRead

    public int doRead(ApplicationBufferHandler handler) throws IOException
    Description copied from interface: `InputBuffer`
    Read from the input stream into the ByteBuffer provided by the ApplicationBufferHandler. IMPORTANT: the current model assumes that the protocol will 'own' the ByteBuffer and return a pointer to it.
    Specified by:
      `doRead` in interface `InputBuffer`
    Parameters:
      `handler` - ApplicationBufferHandler that provides the buffer to read data into.
    Returns:
      The number of bytes that have been added to the buffer or -1 for end of stream
    Throws:
      `IOException` - If an I/O error occurs reading from the input stream

  - ### available

    public int available()
    Description copied from interface: `InputBuffer`
    Obtain an estimate of the number of bytes that can be read without blocking. Typically, this will be the number of available bytes known to be buffered.
    Specified by:
      `available` in interface `InputBuffer`
    Returns:
      The number of bytes that can be read without blocking

  - ### fillHeaderBuffer

    public boolean fillHeaderBuffer() throws IOException
    Description copied from interface: `HttpHeaderParser.HeaderDataSource`
    Read more data into the header buffer. The implementation is expected to determine if blocking or not blocking IO should be used.
    Specified by:
      `fillHeaderBuffer` in interface `HttpHeaderParser.HeaderDataSource`
    Returns:
      `true` if more data was added to the buffer, otherwise `false`
    Throws:
      `IOException` - If an I/O error occurred while obtaining more header data

  - ### setByteBuffer

    public void setByteBuffer(ByteBuffer buffer)
    Description copied from interface: `ApplicationBufferHandler`
    Set the byte buffer.
    Specified by:
      `setByteBuffer` in interface `ApplicationBufferHandler`
    Parameters:
      `buffer` - the byte buffer

  - ### getByteBuffer

    public ByteBuffer getByteBuffer()
    Description copied from interface: `ApplicationBufferHandler`
    Returns the current byte buffer.
    Specified by:
      `getByteBuffer` in interface `ApplicationBufferHandler`
    Returns:
      the byte buffer

  - ### getHeaderByteBuffer

    public ByteBuffer getHeaderByteBuffer()
    Description copied from interface: `HttpHeaderParser.HeaderDataSource`
    Obtain a reference to the buffer containing the header data.
    Specified by:
      `getHeaderByteBuffer` in interface `HttpHeaderParser.HeaderDataSource`
    Returns:
      The buffer containing the header data

  - ### expand

    public void expand(int size)
    Description copied from interface: `ApplicationBufferHandler`
    Expand the byte buffer to at least the given size. Some implementations may not implement this.
    Specified by:
      `expand` in interface `ApplicationBufferHandler`
    Parameters:
      `size` - the desired size