Class AbstractMessageParser<T extends HttpMessage>
- java.lang.Object
-
- org.apache.hc.core5.http.impl.nio.AbstractMessageParser<T>
-
- All Implemented Interfaces:
NHttpMessageParser<T>
- Direct Known Subclasses:
DefaultHttpRequestParser
,DefaultHttpResponseParser
public abstract class AbstractMessageParser<T extends HttpMessage> extends java.lang.Object implements NHttpMessageParser<T>
AbstractNHttpMessageParser
that serves as a base for all message parser implementations.- Since:
- 4.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
AbstractMessageParser.State
-
Field Summary
Fields Modifier and Type Field Description private int
emptyLineCount
private java.util.List<CharArrayBuffer>
headerBufs
private CharArrayBuffer
lineBuf
private LineParser
lineParser
private T
message
private Http1Config
messageConstraints
private AbstractMessageParser.State
state
-
Constructor Summary
Constructors Constructor Description AbstractMessageParser(LineParser lineParser, Http1Config messageConstraints)
Creates an instance of AbstractMessageParser.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract T
createMessage(CharArrayBuffer buffer)
CreatesHttpMessage
instance based on the content of the input buffer containing the first line of the incoming HTTP message.(package private) LineParser
getLineParser()
T
parse(SessionInputBuffer sessionBuffer, boolean endOfStream)
Attempts to parse a complete message head from the content of the internal buffer.private void
parseHeader()
private T
parseHeadLine()
void
reset()
Resets the parser.
-
-
-
Field Detail
-
state
private AbstractMessageParser.State state
-
message
private T extends HttpMessage message
-
lineBuf
private CharArrayBuffer lineBuf
-
headerBufs
private final java.util.List<CharArrayBuffer> headerBufs
-
emptyLineCount
private int emptyLineCount
-
lineParser
private final LineParser lineParser
-
messageConstraints
private final Http1Config messageConstraints
-
-
Constructor Detail
-
AbstractMessageParser
public AbstractMessageParser(LineParser lineParser, Http1Config messageConstraints)
Creates an instance of AbstractMessageParser.- Parameters:
lineParser
- the line parser. Ifnull
LazyLineParser.INSTANCE
will be used.messageConstraints
- Message constraints. Ifnull
Http1Config.DEFAULT
will be used.- Since:
- 4.3
-
-
Method Detail
-
getLineParser
LineParser getLineParser()
-
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 interfaceNHttpMessageParser<T extends HttpMessage>
-
createMessage
protected abstract T createMessage(CharArrayBuffer buffer) throws HttpException
CreatesHttpMessage
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
-
parseHeadLine
private T parseHeadLine() throws java.io.IOException, HttpException
- Throws:
java.io.IOException
HttpException
-
parseHeader
private void parseHeader() throws java.io.IOException
- Throws:
java.io.IOException
-
parse
public T parse(SessionInputBuffer sessionBuffer, boolean endOfStream) throws java.io.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 returnnull
.- Specified by:
parse
in interfaceNHttpMessageParser<T extends HttpMessage>
- Parameters:
sessionBuffer
- session input buffer.endOfStream
- end of stream flag- Returns:
- HTTP message head, if available,
null
otherwise. - Throws:
java.io.IOException
- in case of an I/O error.HttpException
- in case the HTTP message is malformed or violates the HTTP protocol.
-
-