4 #include <unordered_map> 5 #include <boost/algorithm/string.hpp> 6 #include <boost/tokenizer.hpp> 14 template <
typename Handler>
26 self->
raw_url.insert(self->raw_url.end(), at, at+length);
32 switch (self->header_building_state)
35 if (!self->header_value.empty())
37 self->
headers.emplace(std::move(self->header_field), std::move(self->header_value));
39 self->header_field.assign(at, at+length);
40 self->header_building_state = 1;
43 self->header_field.insert(self->header_field.end(), at, at+length);
51 switch (self->header_building_state)
54 self->
header_value.insert(self->header_value.end(), at, at+length);
57 self->header_building_state = 0;
58 self->header_value.assign(at, at+length);
66 if (!self->header_field.empty())
68 self->
headers.emplace(std::move(self->header_field), std::move(self->header_value));
70 self->process_header();
76 self->
body.insert(self->body.end(), at, at+length);
84 self->
url =
self->raw_url.substr(0, self->raw_url.find(
"?"));
87 self->process_message();
97 bool feed(
const char* buffer,
int length)
111 return nparsed == length;
116 return feed(
nullptr, 0);
std::string raw_url
Definition: parser.h:156
Definition: http_parser_merged.h:204
std::string header_value
Definition: parser.h:161
unsigned int method
Definition: http_parser_merged.h:219
std::string header_field
Definition: parser.h:160
Definition: http_request.h:23
unsigned short http_minor
Definition: http_parser_merged.h:217
void clear()
Definition: query_string.h:294
HTTPParser(Handler *handler)
Definition: parser.h:90
static int on_url(http_parser *self_, const char *at, size_t length)
Definition: parser.h:23
int header_building_state
Definition: parser.h:159
static int on_message_begin(http_parser *self_)
Definition: parser.h:17
std::string url
Definition: parser.h:157
ci_map headers
Definition: parser.h:162
bool is_upgrade() const
Definition: parser.h:146
void process_header()
Definition: parser.h:131
void clear()
Definition: parser.h:119
Definition: http_parser_merged.h:234
request to_request() const
Definition: parser.h:141
bool check_version(int major, int minor) const
Definition: parser.h:151
bool done()
Definition: parser.h:114
static int on_body(http_parser *self_, const char *at, size_t length)
Definition: parser.h:73
Handler * handler_
Definition: parser.h:166
size_t http_parser_execute(http_parser *parser, const http_parser_settings *settings, const char *data, size_t len)
Definition: http_parser_merged.h:831
unsigned short http_major
Definition: http_parser_merged.h:216
Definition: http_parser_merged.h:132
static int on_header_field(http_parser *self_, const char *at, size_t length)
Definition: parser.h:29
static int on_headers_complete(http_parser *self_)
Definition: parser.h:63
static int on_header_value(http_parser *self_, const char *at, size_t length)
Definition: parser.h:48
std::string body
Definition: parser.h:164
std::unordered_multimap< std::string, std::string, ci_hash, ci_key_eq > ci_map
Definition: ci_map.h:33
bool feed(const char *buffer, int length)
Definition: parser.h:97
query_string url_params
Definition: parser.h:163
void http_parser_init(http_parser *parser, enum http_parser_type type)
Definition: http_parser_merged.h:2299
unsigned int upgrade
Definition: http_parser_merged.h:227
void process_message()
Definition: parser.h:136
static int on_message_complete(http_parser *self_)
Definition: parser.h:79
HTTPMethod
Definition: common.h:11
Definition: query_string.h:239