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.