org.apache.http.impl.nio.codecs
Class AbstractMessageParser

java.lang.Object
  extended by org.apache.http.impl.nio.codecs.AbstractMessageParser
All Implemented Interfaces:
NHttpMessageParser
Direct Known Subclasses:
HttpRequestParser, HttpResponseParser

public abstract class AbstractMessageParser
extends Object
implements NHttpMessageParser

Abstract NHttpMessageParser that serves as a base for all message parser implementations.

Since:
4.0
Version:
$Revision: 744538 $

Field Summary
protected  LineParser lineParser
           
 
Constructor Summary
AbstractMessageParser(SessionInputBuffer buffer, LineParser parser, HttpParams params)
          Creates an instance of this class.
 
Method Summary
protected abstract  HttpMessage createMessage(CharArrayBuffer buffer)
          Creates HttpMessage instance based on the content of the input buffer containing the first line of the incoming HTTP message.
 int fillBuffer(ReadableByteChannel channel)
          Fills the internal buffer of the parser with input data from the given ReadableByteChannel.
 HttpMessage parse()
          Attempts to parse a complete message head from the content of the internal buffer.
 void reset()
          Resets the parser.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

lineParser

protected final LineParser lineParser
Constructor Detail

AbstractMessageParser

public AbstractMessageParser(SessionInputBuffer buffer,
                             LineParser parser,
                             HttpParams params)
Creates an instance of this class.

The following HTTP parameters affect the initialization:

CoreConnectionPNames.MAX_HEADER_COUNT parameter determines the maximum HTTP header count allowed. If set to a positive value, the number of HTTP headers received from the data stream exceeding this limit will cause an IOException. A negative or zero value will effectively disable the check. Per default the check is disabled.

CoreConnectionPNames.MAX_LINE_LENGTH parameter determines the maximum line length limit. If set to a positive value, any HTTP line exceeding this limit will cause an IOException. A negative or zero value will effectively disable the check the check. Per default the check is disabled.

Parameters:
buffer - the session input buffer.
parser - the line parser.
params - HTTP parameters.
Method Detail

reset

public void reset()
Description copied from interface: NHttpMessageParser
Resets the parser. The parser will be ready to start parsing another HTTP message.

Specified by:
reset in interface NHttpMessageParser

fillBuffer

public int fillBuffer(ReadableByteChannel channel)
               throws IOException
Description copied from interface: NHttpMessageParser
Fills the internal buffer of the parser with input data from the given ReadableByteChannel.

Specified by:
fillBuffer in interface NHttpMessageParser
Parameters:
channel - the input channel
Returns:
number of bytes read.
Throws:
IOException - in case of an I/O error.

createMessage

protected abstract HttpMessage createMessage(CharArrayBuffer buffer)
                                      throws HttpException,
                                             ParseException
Creates HttpMessage instance based on the content of the input buffer containing the first line of the incoming HTTP message.

Parameters:
buffer - the line buffer.
Returns:
HTTP message.
Throws:
HttpException - in case of HTTP protocol violation
ParseException - in case of a parse error.

parse

public HttpMessage parse()
                  throws IOException,
                         HttpException
Description copied from interface: NHttpMessageParser
Attempts to parse a complete message head from the content of the internal buffer. If the message in the input buffer is incomplete this method will return null.

Specified by:
parse in interface NHttpMessageParser
Returns:
HTTP message head, if available, null otherwise.
Throws:
IOException - in case of an I/O error.
HttpException - in case the HTTP message is malformed or violates the HTTP protocol.


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