Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.coyote.http11
Class InternalAprInputBuffer

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

All Implemented Interfaces:
  InputBuffer

public class InternalAprInputBuffer
extends java.lang.Object
implements InputBuffer

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 InputFilter[]` | `activeFilters` Active filters (in order).
`protected char[]` | `ascbuf` Pointer to the US-ASCII header buffer.
`protected java.nio.ByteBuffer` | `bbuf` Direct byte buffer used to perform actual reading.
`protected byte[]` | `bodyBuffer` HTTP body buffer.
`protected byte[]` | `buf` Pointer to the current read buffer.
`protected InputFilter[]` | `filterLibrary` Filter library.
`protected char[]` | `headerBuffer` US-ASCII header buffer.
`protected byte[]` | `headerBuffer1` HTTP header buffer no 1.
`protected byte[]` | `headerBuffer2` HTTP header buffer no 2.
`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` State.
`protected int` | `pos` Position in the buffer.
`protected long` | `readTimeout` The socket timeout used when reading the first block of the request header.
`protected Request` | `request` Associated Coyote request.
`protected static StringManager` | `sm` The string manager for this package.
`protected long` | `socket` Underlying socket.
`protected boolean` | `swallowInput` Swallow input ?

Constructor Summary
`InternalAprInputBuffer(Request request, int headerBufferSize, long readTimeout)` 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.
`void` | `clearFilters()` Clear filters.
`int` | `doRead(ByteChunk chunk, Request req)` Read some bytes.
`void` | `endRequest()` End request (consumes leftover bytes).
`protected boolean` | `fill()` Fill the internal buffer using data from the undelying input stream.
`InputFilter[]` | `getFilters()` Get filters.
`long` | `getSocket()` Get the underlying socket input stream.
`void` | `nextRequest()` End processing of current HTTP request.
`boolean` | `parseHeader()` Parse an HTTP header.
`void` | `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.
`void` | `setSwallowInput(boolean swallowInput)` Set the swallow input flag.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### sm

    protected static StringManager sm

  The string manager for this package.

### request

    protected Request request

  Associated Coyote request.

### headers

    protected MimeHeaders headers

  Headers of the associated request.

### parsingHeader

    protected boolean parsingHeader

  State.

### swallowInput

    protected boolean swallowInput

  Swallow input ? (in the case of an expectation)

### buf

    protected byte[] buf

  Pointer to the current read buffer.

### ascbuf

    protected char[] ascbuf

  Pointer to the US-ASCII header buffer.

### lastValid

    protected int lastValid

  Last valid byte.

### pos

    protected int pos

  Position in the buffer.

### headerBuffer1

    protected byte[] headerBuffer1

  HTTP header buffer no 1.

### headerBuffer2

    protected byte[] headerBuffer2

  HTTP header buffer no 2.

### bodyBuffer

    protected byte[] bodyBuffer

  HTTP body buffer.

### headerBuffer

    protected char[] headerBuffer

  US-ASCII header buffer.

### bbuf

    protected java.nio.ByteBuffer bbuf

  Direct byte buffer used to perform actual reading.

### socket

    protected long socket

  Underlying socket.

### inputStreamInputBuffer

    protected InputBuffer inputStreamInputBuffer

  Underlying input buffer.

### filterLibrary

    protected InputFilter[] filterLibrary

  Filter library. Note: Filter[0] is always the "chunked" filter.

### activeFilters

    protected InputFilter[] activeFilters

  Active filters (in order).

### lastActiveFilter

    protected int lastActiveFilter

  Index of the last active filter.

### readTimeout

    protected long readTimeout

  The socket timeout used when reading the first block of the request header.

Constructor Detail

### InternalAprInputBuffer

    public InternalAprInputBuffer(Request request,
                                  int headerBufferSize,
                                  long readTimeout)

  Alternate constructor.

Method Detail

### setSocket

    public void setSocket(long socket)

  Set the underlying socket.

### getSocket

    public long getSocket()

  Get the underlying socket input stream.

### addFilter

    public void addFilter(InputFilter filter)

  Add an input filter to the filter library.

### getFilters

    public InputFilter[] getFilters()

  Get filters.

### clearFilters

    public void clearFilters()

  Clear filters.

### addActiveFilter

    public void addActiveFilter(InputFilter filter)

  Add an input filter to the filter library.

### setSwallowInput

    public void setSwallowInput(boolean swallowInput)

  Set the swallow input flag.

### recycle

    public void recycle()

  Recycle the input buffer. This should be called when closing the connection.

### nextRequest

    public void nextRequest()
                     throws java.io.IOException

  End processing of current HTTP request. Note: All bytes of the current request should have been already consumed. This method only resets all the pointers so that we are ready to parse the next HTTP request.

  Throws:
    `java.io.IOException`

### endRequest

    public void endRequest()
                    throws java.io.IOException

  End request (consumes leftover bytes).

  Throws:
    `java.io.IOException` - an undelying I/O error occured

### parseRequestLine

    public boolean parseRequestLine(boolean useAvailableData)
                             throws java.io.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.

  Returns:
    true if data is properly fed; false if no data is available immediately and thread should be freed
  Throws:
    `java.io.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.

### parseHeaders

    public void parseHeaders()
                      throws java.io.IOException

  Parse the HTTP headers.

  Throws:
    `java.io.IOException`

### parseHeader

    public boolean parseHeader()
                        throws java.io.IOException

  Parse an HTTP header.

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

### doRead

    public int doRead(ByteChunk chunk,
                      Request req)
               throws java.io.IOException

  Read some bytes.

  Specified by:
    `doRead` in interface `InputBuffer`
  Throws:
    `java.io.IOException`

### fill

    protected boolean fill()
                    throws java.io.IOException

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

  Returns:
    false if at end of stream
  Throws:
    `java.io.IOException`

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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