4#include "../Foundation/Result.h"
5#include "../Foundation/Span.h"
24 size_t tokenStart = 0;
25 size_t tokenLength = 0;
28 bool connectionKeepAlive =
true;
52 Token token = Token::HeadersEnd;
81 size_t globalStart = 0;
82 size_t globalLength = 0;
83 int topLevelCoroutine = 0;
84 int nestedParserCoroutine = 0;
85 bool parsedContentLength =
false;
86 bool parsedConnection =
false;
87 size_t matchIndex = 0;
89 static constexpr size_t numMatches = 2;
91 size_t matchingHeader[numMatches] = {0};
92 bool matchingHeaderValid[numMatches] = {
false};
95 [[nodiscard]]
bool parseHeaderName(
char currentChar);
96 [[nodiscard]]
bool parseHeaderValue(
char currentChar);
97 [[nodiscard]]
bool parseStatusCode(
char currentChar);
98 [[nodiscard]]
bool parseNumberValue(
char currentChar);
99 [[nodiscard]]
bool parseConnectionValue(
char currentChar);
100 [[nodiscard]]
bool parseHeadersEnd(
char currentChar);
101 [[nodiscard]]
bool parseMethod(
char currentChar);
102 [[nodiscard]]
bool parseUrl(
char currentChar);
104 template <
bool spaces>
105 [[nodiscard]]
bool parseVersion(
char currentChar);
107 template <
bool (HttpParser::*Func)(
char), Token currentResult>
108 Result process(Span<const char>& data,
size_t& readBytes, Span<const char>& parsedData);
unsigned long long uint64_t
Platform independent (8) bytes unsigned int.
Definition PrimitiveTypes.h:42
unsigned int uint32_t
Platform independent (4) bytes unsigned int.
Definition PrimitiveTypes.h:38
Incremental HTTP request or response parser.
Definition HttpParser.h:14
State
State of the parser.
Definition HttpParser.h:32
Token
One possible Token reported by the parser.
Definition HttpParser.h:40
HeaderType
Header types.
Definition HttpParser.h:72
Method
Method of the current request / response.
Definition HttpParser.h:17
Result parse(Span< const char > data, size_t &readBytes, Span< const char > &parsedData)
Parse an incoming chunk of bytes, returning actually parsed span.
Type
Type of the stream to be parsed (Request or Response)
Definition HttpParser.h:57
bool matchesHeader(HeaderType headerName) const
Check if current result matches this HeaderType.
An ascii string used as boolean result. SC_TRY macro forwards errors to caller.
Definition Result.h:13
View over a contiguous sequence of items (pointer + size in elements).
Definition Span.h:29