Parser
#include <icy/http/parser.h>
class ParserDefined in src/http/include/icy/http/parser.h:55
Public Methods
| Return | Name | Description |
|---|---|---|
Parser | Creates a response parser. The response object is populated as data is parsed. | |
Parser | Creates a request parser. The request object is populated as data is parsed. | |
Parser | Creates a parser of the given type without binding a message object. | |
~Parser | ||
Parser | Deleted constructor. | |
Parser & | operator= | Deleted assignment operator. |
Parser | Deleted constructor. | |
Parser & | operator= | Deleted assignment operator. |
ParseResult | parse | Feeds a buffer of raw HTTP data into the parser. |
void | reset | Reset the internal state (reinitialises llhttp). Safe to call externally, NOT from inside llhttp callbacks. |
void | resetState | Reset internal flags without reinitialising llhttp. Safe to call from inside llhttp callbacks (e.g. on_message_begin). |
bool | complete const | Returns true if parsing is complete, either in success or error. |
bool | upgrade const | Returns true if the connection should be upgraded. |
llhttp_type_t | type const inline | Returns the parser type (HTTP_REQUEST or HTTP_RESPONSE). |
void | setRequest | Binds an HTTP request object to populate during parsing. Must only be called when no message is currently set and type is HTTP_REQUEST. |
void | setResponse | Binds an HTTP response object to populate during parsing. Must only be called when no message is currently set and type is HTTP_RESPONSE. |
void | setObserver | Sets the observer that receives parser events. |
void | clearMessage | Clear request/response pointers so they can be re-set. Used when resetting a pooled connection for reuse. |
http::Message * | message | Returns the currently bound message (request or response), or nullptr. |
ParserObserver * | observer const | Returns the current parser observer, or nullptr if none is set. |
Parser
Parser(http::Response * response)Defined in src/http/include/icy/http/parser.h:72
Creates a response parser. The response object is populated as data is parsed.
Parameters
| Parameter | Type | Description |
|---|---|---|
response | http::Response * | HTTP response object to populate. |
Parser
Parser(http::Request * request)Defined in src/http/include/icy/http/parser.h:76
Creates a request parser. The request object is populated as data is parsed.
Parameters
| Parameter | Type | Description |
|---|---|---|
request | http::Request * | HTTP request object to populate. |
Parser
Parser(llhttp_type_t type)Defined in src/http/include/icy/http/parser.h:80
Creates a parser of the given type without binding a message object.
Parameters
| Parameter | Type | Description |
|---|---|---|
type | llhttp_type_t | Either HTTP_REQUEST or HTTP_RESPONSE. |
~Parser
~Parser()Defined in src/http/include/icy/http/parser.h:81
Parser
Parser(const Parser &) = deleteDefined in src/http/include/icy/http/parser.h:83
Deleted constructor.
operator=
Parser & operator=(const Parser &) = deleteDefined in src/http/include/icy/http/parser.h:84
Deleted assignment operator.
Parser
Parser(Parser &&) = deleteDefined in src/http/include/icy/http/parser.h:85
Deleted constructor.
operator=
Parser & operator=(Parser &&) = deleteDefined in src/http/include/icy/http/parser.h:86
Deleted assignment operator.
parse
ParseResult parse(const char * data, size_t length)Defined in src/http/include/icy/http/parser.h:95
Feeds a buffer of raw HTTP data into the parser.
May be called multiple times for streaming data. The parser state persists between calls. On completion or error, the observer is notified.
Returns
Structured parse result including bytes consumed and terminal state.
Parameters
| Parameter | Type | Description |
|---|---|---|
data | const char * | Pointer to the input data buffer. |
length | size_t | Number of bytes in the buffer. |
reset
void reset()Defined in src/http/include/icy/http/parser.h:99
Reset the internal state (reinitialises llhttp). Safe to call externally, NOT from inside llhttp callbacks.
resetState
void resetState()Defined in src/http/include/icy/http/parser.h:103
Reset internal flags without reinitialising llhttp. Safe to call from inside llhttp callbacks (e.g. on_message_begin).
complete
const
bool complete() constDefined in src/http/include/icy/http/parser.h:107
Returns true if parsing is complete, either in success or error.
upgrade
const
bool upgrade() constDefined in src/http/include/icy/http/parser.h:110
Returns true if the connection should be upgraded.
type
const inline
inline llhttp_type_t type() constDefined in src/http/include/icy/http/parser.h:113
Returns the parser type (HTTP_REQUEST or HTTP_RESPONSE).
setRequest
void setRequest(http::Request * request)Defined in src/http/include/icy/http/parser.h:118
Binds an HTTP request object to populate during parsing. Must only be called when no message is currently set and type is HTTP_REQUEST.
Parameters
| Parameter | Type | Description |
|---|---|---|
request | http::Request * | The request object to populate. |
setResponse
void setResponse(http::Response * response)Defined in src/http/include/icy/http/parser.h:123
Binds an HTTP response object to populate during parsing. Must only be called when no message is currently set and type is HTTP_RESPONSE.
Parameters
| Parameter | Type | Description |
|---|---|---|
response | http::Response * | The response object to populate. |
setObserver
void setObserver(ParserObserver * observer)Defined in src/http/include/icy/http/parser.h:127
Sets the observer that receives parser events.
Parameters
| Parameter | Type | Description |
|---|---|---|
observer | ParserObserver * | Observer to notify. May be nullptr to clear. |
clearMessage
void clearMessage()Defined in src/http/include/icy/http/parser.h:131
Clear request/response pointers so they can be re-set. Used when resetting a pooled connection for reuse.
message
http::Message * message()Defined in src/http/include/icy/http/parser.h:134
Returns the currently bound message (request or response), or nullptr.
observer
const
ParserObserver * observer() constDefined in src/http/include/icy/http/parser.h:137
Returns the current parser observer, or nullptr if none is set.
Protected Attributes
| Return | Name | Description |
|---|---|---|
ParserObserver * | _observer | |
http::Request * | _request | |
http::Response * | _response | |
http::Message * | _message | |
llhttp_t | _parser | |
llhttp_settings_t | _settings | |
llhttp_type_t | _type | |
bool | _wasHeaderValue | |
std::string | _lastHeaderField | |
std::string | _lastHeaderValue | |
bool | _complete | |
bool | _upgrade | |
Error | _error | |
ParseResult | _lastResult | |
MessageScratch | _scratch |
_observer
ParserObserver * _observerType: ParserObserver *
Defined in src/http/include/icy/http/parser.h:185
_request
http::Request * _requestType: http::Request *
Defined in src/http/include/icy/http/parser.h:186
_response
http::Response * _responseType: http::Response *
Defined in src/http/include/icy/http/parser.h:187
_message
http::Message * _messageType: http::Message *
Defined in src/http/include/icy/http/parser.h:188
_parser
llhttp_t _parserDefined in src/http/include/icy/http/parser.h:190
_settings
llhttp_settings_t _settingsDefined in src/http/include/icy/http/parser.h:191
_type
llhttp_type_t _typeDefined in src/http/include/icy/http/parser.h:192
_wasHeaderValue
bool _wasHeaderValueDefined in src/http/include/icy/http/parser.h:194
_lastHeaderField
std::string _lastHeaderFieldDefined in src/http/include/icy/http/parser.h:195
_lastHeaderValue
std::string _lastHeaderValueDefined in src/http/include/icy/http/parser.h:196
_complete
bool _completeDefined in src/http/include/icy/http/parser.h:198
_upgrade
bool _upgradeDefined in src/http/include/icy/http/parser.h:199
_error
Error _errorType: Error
Defined in src/http/include/icy/http/parser.h:201
_lastResult
ParseResult _lastResultType: ParseResult
Defined in src/http/include/icy/http/parser.h:202
_scratch
MessageScratch _scratchType: MessageScratch
Defined in src/http/include/icy/http/parser.h:203
Protected Methods
| Return | Name | Description |
|---|---|---|
void | init | |
void | clearBoundMessage | |
void | storeHeader | |
void | applyScratchToBoundMessage | |
void | onHeader | Callbacks. |
void | onHeadersEnd | |
void | onBody | |
void | onMessageEnd | |
void | onError |
init
void init()Defined in src/http/include/icy/http/parser.h:162
clearBoundMessage
void clearBoundMessage()Defined in src/http/include/icy/http/parser.h:163
storeHeader
void storeHeader(std::string name, std::string value)Defined in src/http/include/icy/http/parser.h:164
applyScratchToBoundMessage
void applyScratchToBoundMessage()Defined in src/http/include/icy/http/parser.h:165
onHeader
void onHeader(std::string name, std::string value)Defined in src/http/include/icy/http/parser.h:168
Callbacks.
onHeadersEnd
void onHeadersEnd()Defined in src/http/include/icy/http/parser.h:169
onBody
void onBody(const char * buf, size_t len)Defined in src/http/include/icy/http/parser.h:170
onMessageEnd
void onMessageEnd()Defined in src/http/include/icy/http/parser.h:171
onError
void onError(llhttp_errno_t errnum, const std::string & message = "")