org.apache.coyote.http11

## Class InternalInputBuffer

- java.lang.Object
- - org.apache.coyote.http11.AbstractInputBuffer<Socket>
  - - org.apache.coyote.http11.InternalInputBuffer

All Implemented Interfaces:
  InputBuffer

    public class InternalInputBuffer
    extends AbstractInputBuffer<Socket>

Implementation of InputBuffer which provides HTTP request header parsing as well as transfer decoding.

Author:
  Remy Maucherat

### Nested Class Summary

Nested Classes
`protected class` `InternalInputBuffer.InputStreamInputBuffer` This class is an input buffer which will read its data from an input stream.

### Field Summary

### Fields inherited from class org.apache.coyote.http11.AbstractInputBuffer

`activeFilters, buf, end, filterLibrary, headers, HTTP_TOKEN_CHAR, inputStreamInputBuffer, lastActiveFilter, lastValid, parsingHeader, pos, request, sm, swallowInput`

### Constructor Summary

Constructors
Constructor and Description
`InternalInputBuffer(Request request, int headerBufferSize)` Default constructor.

### Method Summary

Methods
`protected boolean` `fill()` Fill the internal buffer using data from the underlying input stream.
`protected boolean` `fill(boolean block)`
`protected void` `init(SocketWrapper<Socket> socketWrapper, AbstractEndpoint endpoint)`
`boolean` `parseHeaders()` Parse the HTTP headers.
`boolean` `parseRequestLine(boolean useAvailableDataOnly)` Read the request line.
`void` `recycle()` Recycle the input buffer.

### Methods inherited from class org.apache.coyote.http11.AbstractInputBuffer

`addActiveFilter, addFilter, available, doRead, endRequest, getFilters, nextRequest, setSwallowInput`

### Methods inherited from class java.lang.Object

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

### Constructor Detail

#### InternalInputBuffer

    public InternalInputBuffer(Request request,
                       int headerBufferSize)

Default constructor.

### Method Detail

#### parseRequestLine

    public boolean parseRequestLine(boolean useAvailableDataOnly)
                             throws IOException

Read the request line. This function is meant to be used during the HTTP request header parsing. Do NOT attempt to read the request body using it.

Specified by:
  `parseRequestLine` in class `AbstractInputBuffer<Socket>`
Throws:
  `IOException` - If an exception occurs during the underlying socket read operations, or if the given buffer is not big enough to accommodate the whole line.

#### parseHeaders

    public boolean parseHeaders()
                         throws IOException

Parse the HTTP headers.

Specified by:
  `parseHeaders` in class `AbstractInputBuffer<Socket>`
Throws:
  `IOException`

#### recycle

    public void recycle()

Description copied from class: `AbstractInputBuffer`
Recycle the input buffer. This should be called when closing the connection.

Overrides:
  `recycle` in class `AbstractInputBuffer<Socket>`

#### init

    protected void init(SocketWrapper<Socket> socketWrapper,
            AbstractEndpoint endpoint)
                 throws IOException

Specified by:
  `init` in class `AbstractInputBuffer<Socket>`
Throws:
  `IOException`

#### fill

    protected boolean fill()
                    throws IOException

Fill the internal buffer using data from the underlying input stream.

Returns:
  false if at end of stream
Throws:
  `IOException`

#### fill

    protected boolean fill(boolean block)
                    throws IOException

Specified by:
  `fill` in class `AbstractInputBuffer<Socket>`
Throws:
  `IOException`