Apache Tomcat 7.0.4

org.apache.coyote.http11
Class InternalAprInputBuffer

java.lang.Object
  extended by org.apache.coyote.http11.AbstractInputBuffer
      extended by org.apache.coyote.http11.InternalAprInputBuffer
All Implemented Interfaces:
InputBuffer

public class InternalAprInputBuffer
extends AbstractInputBuffer

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

Author:
Remy Maucherat

Nested Class Summary
protected  class InternalAprInputBuffer.SocketInputBuffer
          This class is an input buffer which will read its data from an input stream.
 
Field Summary
protected  ByteBuffer bbuf
          Direct byte buffer used to perform actual reading.
protected  long socket
          Underlying socket.
 
Fields inherited from class org.apache.coyote.http11.AbstractInputBuffer
activeFilters, buf, end, filterLibrary, headers, inputStream, inputStreamInputBuffer, lastActiveFilter, lastValid, parsingHeader, pos, request, sm, swallowInput
 
Constructor Summary
InternalAprInputBuffer(Request request, int headerBufferSize)
          Alternate constructor.
 
Method Summary
 int available()
          Available bytes (note that due to encoding, this may not correspond )
 int doRead(ByteChunk chunk, Request req)
          Read some bytes.
protected  boolean fill()
          Fill the internal buffer using data from the underlying input stream.
protected  boolean fill(boolean block)
           
 long getSocket()
          Get the underlying socket input stream.
 boolean 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 setSocket(long socket)
          Set the underlying socket.
 
Methods inherited from class org.apache.coyote.http11.AbstractInputBuffer
addActiveFilter, addFilter, clearFilters, endRequest, getFilters, getInputStream, nextRequest, setInputStream, setSwallowInput
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

bbuf

protected ByteBuffer bbuf
Direct byte buffer used to perform actual reading.


socket

protected long socket
Underlying socket.

Constructor Detail

InternalAprInputBuffer

public InternalAprInputBuffer(Request request,
                              int headerBufferSize)
Alternate constructor.

Method Detail

setSocket

public void setSocket(long socket)
Set the underlying socket.


getSocket

public long getSocket()
Get the underlying socket input stream.


recycle

public void recycle()
Recycle the input buffer. This should be called when closing the connection.

Overrides:
recycle in class AbstractInputBuffer

parseRequestLine

public boolean parseRequestLine(boolean useAvailableData)
                         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
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 accommodate the whole line.

parseHeaders

public boolean parseHeaders()
                     throws IOException
Parse the HTTP headers.

Specified by:
parseHeaders in class AbstractInputBuffer
Throws:
IOException

parseHeader

public boolean parseHeader()
                    throws IOException
Parse an HTTP header.

Returns:
false after reading a blank line (which indicates that the HTTP header parsing is done
Throws:
IOException

available

public int available()
Available bytes (note that due to encoding, this may not correspond )


doRead

public int doRead(ByteChunk chunk,
                  Request req)
           throws IOException
Read some bytes.

Specified by:
doRead in interface InputBuffer
Overrides:
doRead in class AbstractInputBuffer
Throws:
IOException

fill

protected boolean fill(boolean block)
                throws IOException
Specified by:
fill in class AbstractInputBuffer
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

Apache Tomcat 7.0.4

Copyright © 2000-2010 Apache Software Foundation. All Rights Reserved.