# Class Http11InputBuffer

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

All Implemented Interfaces:
  `InputBuffer, ApplicationBufferHandler`

public class Http11InputBuffer extends Object implements InputBuffer, ApplicationBufferHandler
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, boolean rejectIllegalHeader, 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.
  `ByteBuffer`
  `getByteBuffer()`
  Returns the current byte buffer.
  `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, boolean rejectIllegalHeader, HttpParser httpParser)
    Constructs a new Http11InputBuffer.
    Parameters:
      `request` - the Coyote request
      `headerBufferSize` - the maximum size of the header buffer
      `rejectIllegalHeader` - if illegal headers should be rejected
      `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

  - ### 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

  - ### 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