25#ifndef MYSQLROUTER_HTTP_REQUEST_INCLUDED
26#define MYSQLROUTER_HTTP_REQUEST_INCLUDED
36#include <system_error>
122 return "Switching Protocols";
126 return "Early Hints";
135 return "Non Authoritive Information";
139 return "Reset Content";
141 return "Partial Content";
143 return "Multi Status";
145 return "Already Reported";
150 return "Multiple Choices";
152 return "Moved Permanently";
158 return "Not Modified";
162 return "Temporary Redirect";
164 return "Permanent Redirect";
167 return "Bad Request";
169 return "Unauthorized";
171 return "Payment Required";
177 return "Method Not Allowed";
179 return "Not NotAcceptable";
181 return "Proxy Authentication Required";
183 return "Request Timeout";
189 return "Length Required";
191 return "Precondition Failed";
193 return "Payload Too Large";
195 return "URITooLarge";
197 return "Unsupported MediaType";
199 return "Range Not Satisfiable";
201 return "Expectation Failed";
203 return "I am a Teapot";
205 return "Misdirected Request";
207 return "Unprocessable Entity";
211 return "Failed Dependency";
213 return "Upgrade Required";
215 return "Precondition Required";
217 return "Too Many Requests";
219 return "Request Header Fields Too Large";
221 return "Unavailable For Legal Reasons";
224 return "Internal Error";
226 return "Not Implemented";
228 return "Bad Gateway";
230 return "Service Unavailable";
232 return "Gateway Timeout";
234 return "HTTP Version Not Supported";
236 return "Variant Also Negotiates";
238 return "Insufficient Storage";
240 return "Loop Detected";
242 return "Not Extended";
244 return "Network Authorization Required";
267using Bitset = std::bitset<Pos::_LAST + 1>;
290 bool is_valid()
const {
return handle_ !=
nullptr; }
306 std::pair<std::string, std::string> operator*();
320 int add(
const char *
key,
const char *value);
325 const char *
get(
const char *
key)
const;
358 void add(
const char *data,
size_t data_size);
363 void add_file(
int file_fd, off_t offset, off_t size);
373 std::vector<uint8_t> pop_front(
size_t length);
400 static std::string
decode(
const std::string &uri_str,
const bool decode_plus);
406 std::string
join()
const;
408 std::string get_scheme()
const;
409 void set_scheme(
const std::string &scheme);
411 std::string get_userinfo()
const;
412 void set_userinfo(
const std::string &userinfo);
414 std::string get_host()
const;
415 void set_host(
const std::string &
host);
417 uint16_t get_port()
const;
418 void set_port(uint16_t
port)
const;
423 std::string get_path()
const;
424 void set_path(
const std::string &
path);
426 std::string get_fragment()
const;
427 void set_fragment(
const std::string &fragment);
429 std::string get_query()
const;
430 void set_query(
const std::string &
query);
435 operator bool()
const;
440 HttpUri(std::unique_ptr<impl> &&uri);
465 unsigned get_response_code()
const;
466 std::string get_response_code_line()
const;
473 send_reply(status_code,
476 void send_reply(
int status_code, std::string status_text);
477 void send_reply(
int status_code, std::string status_text,
HttpBuffer &
buffer);
480 send_error(status_code,
483 void send_error(
int status_code, std::string status_text);
487 operator bool()
const;
490 void error_code(
int);
491 std::string error_msg();
493 std::error_code socket_error_code()
const;
494 void socket_error_code(std::error_code ec);
502 bool is_modified_since(time_t last_modified);
507 bool add_last_modified(time_t last_modified);
580 const std::string &uri_path);
597 size_t date_buf_len);
A simple bitset wrapper class, whose size can be specified after the object has been defined.
Definition: ut0bitset.h:38
Main event registration and dispatch engine
Definition: http_common.h:114
Enables bufforing of I/O for a socket.
Definition: http_common.h:199
Http bound socket.
Definition: http_request.h:285
BoundHandle handle_
Definition: http_request.h:293
void * BoundHandle
Definition: http_request.h:287
EventHttpBoundSocket(BoundHandle handle)
Definition: http_request.h:288
bool is_valid() const
Definition: http_request.h:290
Http server build on top of EventBase.
Definition: http_request.h:524
std::unique_ptr< impl > pImpl_
Definition: http_request.h:561
void(*)(HttpRequest *, void *) CallbackRequest
Definition: http_request.h:526
net::impl::socket::native_handle_type SocketHandle
Definition: http_request.h:528
EventBuffer(*)(EventBase *, void *) CallbackBuffer
Definition: http_request.h:527
a Buffer to send/read from network.
Definition: http_request.h:349
std::unique_ptr< impl > pImpl_
Definition: http_request.h:380
HttpBuffer(HttpBuffer &&)
Definition: http_client.h:64
a HTTP request and response.
Definition: http_request.h:452
void(*)(HttpRequest *, void *) RequestHandler
Definition: http_request.h:454
void send_error(int status_code)
Definition: http_request.h:479
std::unique_ptr< impl > pImpl_
Definition: http_request.h:514
void send_reply(int status_code)
Definition: http_request.h:472
representation of HTTP URI.
Definition: http_request.h:390
std::unique_ptr< impl > pImpl_
Definition: http_request.h:442
This class is used to trace function calls and other process information.
Definition: semisync.h:42
#define HTTP_COMMON_EXPORT
Definition: http_common_export.h:39
HTTP_COMMON_EXPORT std::string http_uri_path_canonicalize(const std::string &uri_path)
canonicalize a URI path.
Definition: http_common.cc:414
HTTP_COMMON_EXPORT time_t time_from_rfc5322_fixdate(const char *date_buf)
convert a Date: header into a time_t.
Definition: http_time.cc:75
HTTP_COMMON_EXPORT int time_to_rfc5322_fixdate(time_t ts, char *date_buf, size_t date_buf_len)
convert time_t into a Date: header value.
Definition: http_time.cc:36
static std::string to_string(const LEX_STRING &str)
Definition: lex_string.h:49
bool operator!=(const my_thread_handle &a, const my_thread_handle &b)
Definition: my_thread.h:157
static char * query
Definition: myisam_ftdump.cc:46
const char * host
Definition: mysqladmin.cc:63
static char * path
Definition: mysqldump.cc:140
constexpr pos_type Options
Definition: http_request.h:260
constexpr pos_type Connect
Definition: http_request.h:262
constexpr pos_type Patch
Definition: http_request.h:263
constexpr pos_type Head
Definition: http_request.h:257
constexpr pos_type Get
Definition: http_request.h:255
constexpr pos_type _LAST
Definition: http_request.h:265
constexpr pos_type Put
Definition: http_request.h:258
constexpr pos_type Delete
Definition: http_request.h:259
constexpr pos_type Post
Definition: http_request.h:256
constexpr pos_type Trace
Definition: http_request.h:261
Definition: http_request.h:251
constexpr type Get
Definition: http_request.h:269
std::bitset< Pos::_LAST+1 > Bitset
Definition: http_request.h:267
constexpr type Delete
Definition: http_request.h:273
int type
Definition: http_request.h:252
constexpr type Options
Definition: http_request.h:274
unsigned pos_type
Definition: http_request.h:253
constexpr type Patch
Definition: http_request.h:277
constexpr type Connect
Definition: http_request.h:276
constexpr type Post
Definition: http_request.h:270
constexpr type Head
Definition: http_request.h:271
constexpr type Put
Definition: http_request.h:272
Definition: http_request.h:47
constexpr key_type PermanentRedirect
Definition: http_request.h:74
constexpr key_type ResetContent
Definition: http_request.h:61
constexpr key_type Gone
Definition: http_request.h:86
constexpr key_type Processing
Definition: http_request.h:53
constexpr key_type VariantAlsoNegotiates
Definition: http_request.h:111
int key_type
Definition: http_request.h:49
constexpr key_type ExpectationFailed
Definition: http_request.h:93
constexpr key_type PreconditionFailed
Definition: http_request.h:88
constexpr key_type RequestHeaderFieldsTooLarge
Definition: http_request.h:102
constexpr key_type InternalError
Definition: http_request.h:105
constexpr key_type UnsupportedMediaType
Definition: http_request.h:91
constexpr key_type MethodNotAllowed
Definition: http_request.h:81
constexpr key_type EarlyHints
Definition: http_request.h:54
constexpr key_type Continue
Definition: http_request.h:51
constexpr key_type MovedPermanently
Definition: http_request.h:68
constexpr key_type HTTPVersionNotSupported
Definition: http_request.h:110
constexpr key_type InstanceManipulationUsed
Definition: http_request.h:65
constexpr key_type NotExtended
Definition: http_request.h:114
constexpr key_type Accepted
Definition: http_request.h:58
constexpr key_type FailedDependency
Definition: http_request.h:98
constexpr key_type RequestTimeout
Definition: http_request.h:84
constexpr key_type MisdirectedRequest
Definition: http_request.h:95
constexpr key_type NoContent
Definition: http_request.h:60
constexpr key_type BadRequest
Definition: http_request.h:76
constexpr key_type LengthRequired
Definition: http_request.h:87
constexpr key_type UpgradeRequired
Definition: http_request.h:99
constexpr key_type GatewayTimeout
Definition: http_request.h:109
constexpr key_type SeeOther
Definition: http_request.h:70
constexpr key_type UnavailableForLegalReasons
Definition: http_request.h:103
constexpr key_type PartialContent
Definition: http_request.h:62
constexpr key_type Forbidden
Definition: http_request.h:79
constexpr key_type IamaTeapot
Definition: http_request.h:94
constexpr key_type MultipleChoices
Definition: http_request.h:67
constexpr key_type BadGateway
Definition: http_request.h:107
constexpr key_type NetworkAuthorizationRequired
Definition: http_request.h:115
constexpr key_type Created
Definition: http_request.h:57
constexpr key_type NotAcceptable
Definition: http_request.h:82
constexpr key_type Conflicts
Definition: http_request.h:85
constexpr key_type NotImplemented
Definition: http_request.h:106
constexpr key_type Found
Definition: http_request.h:69
constexpr key_type SwitchingProtocols
Definition: http_request.h:52
constexpr key_type UnprocessableEntity
Definition: http_request.h:96
name_type get_default_status_text(key_type key)
Definition: http_request.h:117
constexpr key_type Ok
Definition: http_request.h:56
constexpr key_type Locked
Definition: http_request.h:97
constexpr key_type RangeNotSatisfiable
Definition: http_request.h:92
constexpr key_type Unauthorized
Definition: http_request.h:77
constexpr key_type InsufficientStorage
Definition: http_request.h:112
constexpr key_type MultiStatus
Definition: http_request.h:63
constexpr key_type ProxyAuthenticationRequired
Definition: http_request.h:83
constexpr key_type PreconditionRequired
Definition: http_request.h:100
constexpr key_type TooManyRequests
Definition: http_request.h:101
const char * name_type
Definition: http_request.h:48
constexpr key_type ServiceUnavailable
Definition: http_request.h:108
constexpr key_type TemporaryRedirect
Definition: http_request.h:73
constexpr key_type PayloadTooLarge
Definition: http_request.h:89
constexpr key_type NotFound
Definition: http_request.h:80
constexpr key_type URITooLarge
Definition: http_request.h:90
constexpr key_type LoopDetected
Definition: http_request.h:113
constexpr key_type PaymentRequired
Definition: http_request.h:78
constexpr key_type NonAuthoritiveInformation
Definition: http_request.h:59
constexpr key_type UseProxy
Definition: http_request.h:72
constexpr key_type NotModified
Definition: http_request.h:71
constexpr key_type AlreadyReported
Definition: http_request.h:64
stdx::expected< std::pair< size_t, T >, std::error_code > decode(const net::const_buffer &buffer, capabilities::value_type caps)
decode a message from a buffer.
Definition: classic_protocol_codec_base.h:118
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:75
Definition: authentication.cc:35
std::string join(Container cont, const std::string &delim)
join elements of an container into a string separated by a delimiter.
Definition: string.h:150
int native_handle_type
Definition: socket_constants.h:50
mutable_buffer buffer(void *p, size_t n) noexcept
Definition: buffer.h:419
void get(PSI_field *, PSI_longlong *) noexcept
Definition: pfs_plugin_column_bigint_v1_all_empty.cc:31
static mysql_service_status_t add(reference_caching_channel channel, const char *implementation_name) noexcept
Definition: component.cc:126
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:191
static int handle(int sql_errno, const char *sqlstate, const char *message, void *state)
Bridge function between the C++ API offered by this module and the C API of the parser service.
Definition: services.cc:63
bool parse(MYSQL_THD thd, const string &query, bool is_prepared, Condition_handler *handler)
Definition: services.cc:80
required string key
Definition: replication_asynchronous_connection_failover.proto:59
required uint64 port
Definition: replication_asynchronous_connection_failover.proto:32
Ssl_acceptor_context_property_type & operator++(Ssl_acceptor_context_property_type &property_type)
Increment operator for Ssl_acceptor_context_type Used by iterator.
Definition: ssl_acceptor_context_data.cc:272