request parser rewrite + added tests
Some checks failed
Docker Build & Publish / build (push) Failing after 11m2s
Some checks failed
Docker Build & Publish / build (push) Failing after 11m2s
* rewrote request parser, now more simplified and theoretically faster * added gtest and an example test to measure parser times
This commit is contained in:
parent
f962f5796d
commit
236f7399fe
5 changed files with 184 additions and 108 deletions
|
@ -9,14 +9,16 @@ namespace anthracite::http {
|
|||
|
||||
class request {
|
||||
private:
|
||||
enum parser_state { METHOD,
|
||||
PATH,
|
||||
QUERY_PARAM_NAME,
|
||||
QUERY_PARAM_VALUE,
|
||||
VERSION,
|
||||
HEADER_NAME,
|
||||
HEADER_VALUE,
|
||||
BODY_CONTENT };
|
||||
enum request_line_parser_state {
|
||||
METHOD, PATH, VERSION
|
||||
};
|
||||
|
||||
enum parser_state {
|
||||
REQUEST_LINE,
|
||||
HEADERS,
|
||||
BODY_CONTENT
|
||||
};
|
||||
|
||||
method _method;
|
||||
version _http_version;
|
||||
std::string _path;
|
||||
|
@ -24,6 +26,11 @@ private:
|
|||
std::string _body_content;
|
||||
std::unordered_map<std::string, header> _headers; // kinda goofy, whatever
|
||||
std::unordered_map<std::string, query_param> _query_params; // kinda goofy, whatever
|
||||
//
|
||||
void parse_request_line(std::string& raw_line);
|
||||
void parse_header(std::string& raw_line);
|
||||
void parse_path(std::string& raw_path);
|
||||
void parse_query_param(std::string& raw_param);
|
||||
|
||||
public:
|
||||
request(std::string& raw_data, const std::string& client_ip);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue