org.apache.coyote.http11
public class InternalNioInputBuffer extends Object implements InputBuffer
| Nested Class Summary | |
|---|---|
| static class | InternalNioInputBuffer.HeaderParseData |
| protected class | InternalNioInputBuffer.SocketInputBuffer
This class is an input buffer which will read its data from an input
stream. |
| Field Summary | |
|---|---|
| protected InputFilter[] | activeFilters
Active filters (in order). |
| protected byte[] | buf
Pointer to the current read buffer. |
| protected int | end
Pos of the end of the header in the buffer, which is also the
start of the body. |
| protected InputFilter[] | filterLibrary
Filter library.
|
| protected InternalNioInputBuffer.HeaderParseData | headerData |
| protected InternalNioInputBuffer.HeaderParsePosition | headerParsePos |
| protected MimeHeaders | headers
Headers of the associated request. |
| protected InputBuffer | inputStreamInputBuffer
Underlying input buffer. |
| protected int | lastActiveFilter
Index of the last active filter. |
| protected int | lastValid
Last valid byte. |
| protected boolean | parsingHeader
Parsing state - used for non blocking parsing so that
when more data arrives, we can pick up where we left off. |
| protected boolean | parsingRequestLine |
| protected boolean | parsingRequestLineEol |
| protected int | parsingRequestLinePhase |
| protected int | parsingRequestLineQPos |
| protected int | parsingRequestLineStart |
| protected NioSelectorPool | pool
Selector pool, for blocking reads and blocking writes |
| protected int | pos
Position in the buffer. |
| protected Request | request
Associated Coyote request. |
| protected static StringManager | sm
The string manager for this package. |
| protected NioChannel | socket
Underlying socket. |
| protected boolean | swallowInput
Swallow input ? |
| Constructor Summary | |
|---|---|
| InternalNioInputBuffer(Request request, int headerBufferSize)
Alternate constructor. | |
| Method Summary | |
|---|---|
| void | addActiveFilter(InputFilter filter)
Add an input filter to the filter library. |
| void | addFilter(InputFilter filter)
Add an input filter to the filter library. |
| int | available()
Available bytes (note that due to encoding, this may not correspond ) |
| void | clearFilters()
Clear filters. |
| int | doRead(ByteChunk chunk, Request req)
Read some bytes. |
| void | endRequest()
End request (consumes leftover bytes).
|
| protected boolean | fill(boolean timeout, boolean block)
Fill the internal buffer using data from the undelying input stream.
|
| InputFilter[] | getFilters()
Get filters. |
| NioSelectorPool | getSelectorPool() |
| NioChannel | getSocket()
Get the underlying socket input stream. |
| boolean | isReadable()
Returns true if there are bytes available from the socket layer |
| int | nbRead()
Issues a non blocking read |
| void | nextRequest()
End processing of current HTTP request.
|
| InternalNioInputBuffer.HeaderParseStatus | parseHeader()
Parse an HTTP header.
|
| boolean | parseHeaders()
Parse the HTTP headers. |
| boolean | parseRequestLine(boolean useAvailableData)
Read the request line. |
| void | recycle()
Recycle the input buffer. |
| void | setSelectorPool(NioSelectorPool pool) |
| void | setSocket(NioChannel socket)
Set the underlying socket. |
| void | setSwallowInput(boolean swallowInput)
Set the swallow input flag. |
Throws: IOException an undelying I/O error occured
Returns: false if at end of stream
Returns: boolean
Throws: IOException
Returns: int
Throws: IOException
Returns: false after reading a blank line (which indicates that the HTTP header parsing is done
Returns: true if data is properly fed; false if no data is available immediately and thread should be freed
Throws: IOException If an exception occurs during the underlying socket read operations, or if the given buffer is not big enough to accomodate the whole line.