## org.mortbay.jetty
Class HttpParser

    java.lang.Object
      org.mortbay.jetty.HttpParser

All Implemented Interfaces:
  Parser

    public class HttpParser

extends Object
implements Parser

Author:
  gregw

Nested Class Summary
`static class` `HttpParser.EventHandler`
`static class` `HttpParser.Input`

Field Summary
`protected int` `_chunkLength`
`protected int` `_chunkPosition`
`protected long` `_contentLength`
`protected long` `_contentPosition`
`protected byte` `_eol`
`protected int` `_length`
`protected int` `_state`
`static int` `STATE_CHUNK`
`static int` `STATE_CHUNK_PARAMS`
`static int` `STATE_CHUNK_SIZE`
`static int` `STATE_CHUNKED_CONTENT`
`static int` `STATE_CONTENT`
`static int` `STATE_END`
`static int` `STATE_END0`
`static int` `STATE_END1`
`static int` `STATE_EOF_CONTENT`
`static int` `STATE_FIELD0`
`static int` `STATE_FIELD1`
`static int` `STATE_FIELD2`
`static int` `STATE_HEADER`
`static int` `STATE_HEADER_NAME`
`static int` `STATE_HEADER_VALUE`
`static int` `STATE_SPACE1`
`static int` `STATE_SPACE2`
`static int` `STATE_START`

Constructor Summary
`HttpParser(Buffer buffer, HttpParser.EventHandler handler)` Constructor.
`HttpParser(Buffers buffers, EndPoint endp, HttpParser.EventHandler handler, int headerBufferSize, int contentBufferSize)` Constructor.

Method Summary
`long` `fill()` fill the buffers from the endpoint
`Buffer` `getBodyBuffer()`
`long` `getContentLength()`
`Buffer` `getHeaderBuffer()`
`int` `getState()`
`boolean` `inContentState()`
`boolean` `inHeaderState()`
`boolean` `isChunking()`
`boolean` `isComplete()`
`boolean` `isIdle()`
`boolean` `isMoreInBuffer()`
`boolean` `isState(int state)`
`void` `parse()` Parse until `END` state.
`long` `parseAvailable()` Parse until END state.
`long` `parseNext()` Parse until next Event.
`void` `reset(boolean returnBuffers)`
`void` `setForceContentBuffer(boolean force)`
`void` `setState(int state)`
`void` `skipCRLF()` Skip any CRLFs in buffers
`String` `toString(Buffer buf)`

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

Field Detail

### STATE_START

    public static final int STATE_START

See Also:
  Constant Field Values

### STATE_FIELD0

    public static final int STATE_FIELD0

See Also:
  Constant Field Values

### STATE_SPACE1

    public static final int STATE_SPACE1

See Also:
  Constant Field Values

### STATE_FIELD1

    public static final int STATE_FIELD1

See Also:
  Constant Field Values

### STATE_SPACE2

    public static final int STATE_SPACE2

See Also:
  Constant Field Values

### STATE_END0

    public static final int STATE_END0

See Also:
  Constant Field Values

### STATE_END1

    public static final int STATE_END1

See Also:
  Constant Field Values

### STATE_FIELD2

    public static final int STATE_FIELD2

See Also:
  Constant Field Values

### STATE_HEADER

    public static final int STATE_HEADER

See Also:
  Constant Field Values

### STATE_HEADER_NAME

    public static final int STATE_HEADER_NAME

See Also:
  Constant Field Values

### STATE_HEADER_VALUE

    public static final int STATE_HEADER_VALUE

See Also:
  Constant Field Values

### STATE_END

    public static final int STATE_END

See Also:
  Constant Field Values

### STATE_EOF_CONTENT

    public static final int STATE_EOF_CONTENT

See Also:
  Constant Field Values

### STATE_CONTENT

    public static final int STATE_CONTENT

See Also:
  Constant Field Values

### STATE_CHUNKED_CONTENT

    public static final int STATE_CHUNKED_CONTENT

See Also:
  Constant Field Values

### STATE_CHUNK_SIZE

    public static final int STATE_CHUNK_SIZE

See Also:
  Constant Field Values

### STATE_CHUNK_PARAMS

    public static final int STATE_CHUNK_PARAMS

See Also:
  Constant Field Values

### STATE_CHUNK

    public static final int STATE_CHUNK

See Also:
  Constant Field Values

### _state

    protected int _state

### _eol

    protected byte _eol

### _length

    protected int _length

### _contentLength

    protected long _contentLength

### _contentPosition

    protected long _contentPosition

### _chunkLength

    protected int _chunkLength

### _chunkPosition

    protected int _chunkPosition

Constructor Detail

### HttpParser

    public HttpParser(Buffer buffer,
                      HttpParser.EventHandler handler)

  Constructor.

### HttpParser

    public HttpParser(Buffers buffers,
                      EndPoint endp,
                      HttpParser.EventHandler handler,
                      int headerBufferSize,
                      int contentBufferSize)

  Constructor.

  Parameters:
    `headerBufferSize` - size in bytes of header buffer
    `contentBufferSize` - size in bytes of content buffer

Method Detail

### getContentLength

    public long getContentLength()

### getState

    public int getState()

### inContentState

    public boolean inContentState()

### inHeaderState

    public boolean inHeaderState()

### isChunking

    public boolean isChunking()

### isIdle

    public boolean isIdle()

  Specified by:
    `isIdle` in interface `Parser`

### isComplete

    public boolean isComplete()

  Specified by:
    `isComplete` in interface `Parser`

### isMoreInBuffer

    public boolean isMoreInBuffer()
                           throws IOException

  Specified by:
    `isMoreInBuffer` in interface `Parser`
  Throws:
    `IOException`

### isState

    public boolean isState(int state)

### parse

    public void parse()
               throws IOException

  Parse until `END` state. If the parser is already in the END state, then it is `reset` and re-parsed.

  Throws:
    `IllegalStateException` - If the buffers have already been partially parsed.
    `IOException`

### parseAvailable

    public long parseAvailable()
                        throws IOException

  Parse until END state. This method will parse any remaining content in the current buffer. It does not care about the `current state` of the parser.

  Specified by:
    `parseAvailable` in interface `Parser`
  Throws:
    `IOException`
  See Also:
    `parse()`, `parseNext()`

### parseNext

    public long parseNext()
                   throws IOException

  Parse until next Event.

  Throws:
    `IOException`

### fill

    public long fill()
              throws IOException

  fill the buffers from the endpoint

  Throws:
    `IOException`

### skipCRLF

    public void skipCRLF()

  Skip any CRLFs in buffers

### reset

    public void reset(boolean returnBuffers)

  Specified by:
    `reset` in interface `Parser`

### setState

    public void setState(int state)

### toString

    public String toString(Buffer buf)

### getHeaderBuffer

    public Buffer getHeaderBuffer()

### getBodyBuffer

    public Buffer getBodyBuffer()

### setForceContentBuffer

    public void setForceContentBuffer(boolean force)

  Parameters:
    `force` - True if a new buffer will be forced to be used for content and the header buffer will not be used.

Copyright © 2007 Mort Bay Consulting. All Rights Reserved.