WebSocket++ 0.8.2
C++ websocket client/server library
base64.hpp
1/*
2 ******
3 base64.hpp is a repackaging of the base64.cpp and base64.h files into a
4 single header suitable for use as a header only library. This conversion was
5 done by Peter Thorson (webmaster@zaphoyd.com) in 2012. All modifications to
6 the code are redistributed under the same license as the original, which is
7 listed below.
8 ******
9
10 base64.cpp and base64.h
11
12 Copyright (C) 2004-2008 René Nyffenegger
13
14 This source code is provided 'as-is', without any express or implied
15 warranty. In no event will the author be held liable for any damages
16 arising from the use of this software.
17
18 Permission is granted to anyone to use this software for any purpose,
19 including commercial applications, and to alter it and redistribute it
20 freely, subject to the following restrictions:
21
22 1. The origin of this source code must not be misrepresented; you must not
23 claim that you wrote the original source code. If you use this source code
24 in a product, an acknowledgment in the product documentation would be
25 appreciated but is not required.
26
27 2. Altered source versions must be plainly marked as such, and must not be
28 misrepresented as being the original source code.
29
30 3. This notice may not be removed or altered from any source distribution.
31
32 René Nyffenegger rene.nyffenegger@adp-gmbh.ch
33
34*/
35
36#ifndef _BASE64_HPP_
37#define _BASE64_HPP_
38
39#include <string>
40
41namespace websocketpp {
42
43static std::string const base64_chars =
44 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
45 "abcdefghijklmnopqrstuvwxyz"
46 "0123456789+/";
47
48/// Test whether a character is a valid base64 character
49/**
50 * @param c The character to test
51 * @return true if c is a valid base64 character
52 */
53static inline bool is_base64(unsigned char c) {
54 return (c == 43 || // +
55 (c >= 47 && c <= 57) || // /-9
56 (c >= 65 && c <= 90) || // A-Z
57 (c >= 97 && c <= 122)); // a-z
58}
59
60/// Encode a char buffer into a base64 string
61/**
62 * @param input The input data
63 * @param len The length of input in bytes
64 * @return A base64 encoded string representing input
65 */
66inline std::string base64_encode(unsigned char const * input, size_t len) {
67 std::string ret;
68 int i = 0;
69 int j = 0;
70 unsigned char char_array_3[3];
71 unsigned char char_array_4[4];
72
73 while (len--) {
74 char_array_3[i++] = *(input++);
75 if (i == 3) {
76 char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
77 char_array_4[1] = ((char_array_3[0] & 0x03) << 4) +
78 ((char_array_3[1] & 0xf0) >> 4);
79 char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) +
80 ((char_array_3[2] & 0xc0) >> 6);
81 char_array_4[3] = char_array_3[2] & 0x3f;
82
83 for(i = 0; (i <4) ; i++) {
84 ret += base64_chars[char_array_4[i]];
85 }
86 i = 0;
87 }
88 }
89
90 if (i) {
91 for(j = i; j < 3; j++) {
92 char_array_3[j] = '\0';
93 }
94
95 char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
96 char_array_4[1] = ((char_array_3[0] & 0x03) << 4) +
97 ((char_array_3[1] & 0xf0) >> 4);
98 char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) +
99 ((char_array_3[2] & 0xc0) >> 6);
100 char_array_4[3] = char_array_3[2] & 0x3f;
101
102 for (j = 0; (j < i + 1); j++) {
103 ret += base64_chars[char_array_4[j]];
104 }
105
106 while((i++ < 3)) {
107 ret += '=';
108 }
109 }
110
111 return ret;
112}
113
114/// Encode a string into a base64 string
115/**
116 * @param input The input data
117 * @return A base64 encoded string representing input
118 */
119inline std::string base64_encode(std::string const & input) {
120 return base64_encode(
121 reinterpret_cast<const unsigned char *>(input.data()),
122 input.size()
123 );
124}
125
126/// Decode a base64 encoded string into a string of raw bytes
127/**
128 * @param input The base64 encoded input data
129 * @return A string representing the decoded raw bytes
130 */
131inline std::string base64_decode(std::string const & input) {
132 size_t in_len = input.size();
133 int i = 0;
134 int j = 0;
135 int in_ = 0;
136 unsigned char char_array_4[4], char_array_3[3];
137 std::string ret;
138
139 while (in_len-- && ( input[in_] != '=') && is_base64(input[in_])) {
140 char_array_4[i++] = input[in_]; in_++;
141 if (i ==4) {
142 for (i = 0; i <4; i++) {
143 char_array_4[i] = static_cast<unsigned char>(base64_chars.find(char_array_4[i]));
144 }
145
146 char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
147 char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
148 char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
149
150 for (i = 0; (i < 3); i++) {
151 ret += char_array_3[i];
152 }
153 i = 0;
154 }
155 }
156
157 if (i) {
158 for (j = i; j <4; j++)
159 char_array_4[j] = 0;
160
161 for (j = 0; j <4; j++)
162 char_array_4[j] = static_cast<unsigned char>(base64_chars.find(char_array_4[j]));
163
164 char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
165 char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
166 char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
167
168 for (j = 0; (j < i - 1); j++) {
169 ret += static_cast<std::string::value_type>(char_array_3[j]);
170 }
171 }
172
173 return ret;
174}
175
176} // namespace websocketpp
177
178#endif // _BASE64_HPP_
#define _WEBSOCKETPP_CPP11_FUNCTIONAL_
#define _WEBSOCKETPP_CPP11_THREAD_
#define _WEBSOCKETPP_CPP11_MEMORY_
#define _WEBSOCKETPP_CPP11_SYSTEM_ERROR_
Concurrency policy that uses std::mutex / boost::mutex.
Definition: basic.hpp:37
Stub for user supplied base class.
Stub for user supplied base class.
Stub class for use when disabling permessage_deflate extension.
Definition: disabled.hpp:53
err_str_pair negotiate(http::attribute_list const &)
Negotiate extension.
Definition: disabled.hpp:65
lib::error_code compress(std::string const &, std::string &)
Compress bytes.
Definition: disabled.hpp:109
std::string generate_offer() const
Generate extension offer.
Definition: disabled.hpp:99
lib::error_code decompress(uint8_t const *, size_t, std::string &)
Decompress bytes.
Definition: disabled.hpp:120
lib::error_code init(bool)
Initialize state.
Definition: disabled.hpp:76
header_list const & get_headers() const
Return a list of all HTTP headers.
Definition: parser.hpp:179
size_t process_body(char const *buf, size_t len)
Process body data.
Definition: parser.hpp:145
std::string const & get_body() const
Get HTTP body.
Definition: parser.hpp:505
bool get_header_as_plist(std::string const &key, parameter_list &out) const
Extract an HTTP parameter list from a parser header.
Definition: parser.hpp:55
void process_header(std::string::iterator begin, std::string::iterator end)
Process a header line.
Definition: parser.hpp:161
void set_version(std::string const &version)
Set HTTP parser Version.
Definition: parser.hpp:41
void remove_header(std::string const &key)
Remove a header from the parser.
Definition: parser.hpp:87
void set_body(std::string const &value)
Set body content.
Definition: parser.hpp:91
bool body_ready() const
Check if the parser is done parsing the body.
Definition: parser.hpp:599
bool prepare_body()
Prepare the parser to begin parsing body data.
Definition: parser.hpp:119
void set_max_body_size(size_t value)
Set body size limit.
Definition: parser.hpp:542
void replace_header(std::string const &key, std::string const &val)
Set a value for an HTTP header, replacing an existing value.
Definition: parser.hpp:81
void append_header(std::string const &key, std::string const &val)
Append a value to an existing HTTP header.
Definition: parser.hpp:67
std::string raw_headers() const
Generate and return the HTTP headers as a string.
Definition: parser.hpp:183
std::string const & get_header(std::string const &key) const
Get the value of an HTTP header.
Definition: parser.hpp:45
std::string const & get_version() const
Get the HTTP version string.
Definition: parser.hpp:410
bool parse_parameter_list(std::string const &in, parameter_list &out) const
Extract an HTTP parameter list from a string.
Definition: parser.hpp:107
size_t get_max_body_size() const
Get body size limit.
Definition: parser.hpp:529
Stores, parses, and manipulates HTTP requests.
Definition: request.hpp:50
std::string raw() const
Returns the full raw request (including the body)
Definition: request.hpp:131
std::string const & get_uri() const
Return the requested URI.
Definition: request.hpp:104
std::string const & get_method() const
Return the request method.
Definition: request.hpp:96
size_t consume(char const *buf, size_t len)
Process bytes in the input buffer.
Definition: request.hpp:41
void set_uri(std::string const &uri)
Set the HTTP uri. Must be a valid HTTP uri.
Definition: request.hpp:159
bool ready() const
Returns whether or not the request is ready for reading.
Definition: request.hpp:82
void set_method(std::string const &method)
Set the HTTP method. Must be a valid HTTP token.
Definition: request.hpp:151
std::string raw_head() const
Returns the raw request headers only (similar to an HTTP HEAD request)
Definition: request.hpp:141
Stores, parses, and manipulates HTTP responses.
Definition: response.hpp:57
void set_status(status_code::value code)
Set response status code and message.
Definition: response.hpp:191
std::string raw() const
Returns the full raw response.
Definition: response.hpp:178
size_t consume(std::istream &s)
Process bytes in the input buffer (istream version)
Definition: response.hpp:139
bool headers_ready() const
Returns true if the response headers are fully parsed.
Definition: response.hpp:121
bool ready() const
Returns true if the response is ready.
Definition: response.hpp:116
void set_status(status_code::value code, std::string const &msg)
Set response status code and message.
Definition: response.hpp:197
const std::string & get_status_msg() const
Return the response status message.
Definition: response.hpp:157
status_code::value get_status_code() const
Return the response status code.
Definition: response.hpp:152
size_t consume(char const *buf, size_t len)
Process bytes in the input buffer.
Definition: response.hpp:42
Basic logger that outputs to an ostream.
Definition: basic.hpp:59
void write(level channel, char const *msg)
Write a cstring message to the given channel.
Definition: basic.hpp:151
void write(level channel, std::string const &msg)
Write a string message to the given channel.
Definition: basic.hpp:137
bool recycle(message *)
Recycle a message.
Definition: alloc.hpp:80
message_ptr get_message(frame::opcode::value op, size_t size)
Get a message buffer with specified size and opcode.
Definition: alloc.hpp:66
message_ptr get_message()
Get an empty message buffer.
Definition: alloc.hpp:55
con_msg_man_ptr get_manager() const
Get a pointer to a connection message manager.
Definition: alloc.hpp:96
Represents a buffer for a single WebSocket message.
Definition: message.hpp:84
message(const con_msg_man_ptr manager, frame::opcode::value op, size_t size=128)
Construct a message and fill in some values.
Definition: message.hpp:107
std::string & get_raw_payload()
Get a non-const reference to the payload string.
Definition: message.hpp:254
void set_header(std::string const &header)
Set prepared frame header.
Definition: message.hpp:234
bool recycle()
Recycle the message.
Definition: message.hpp:316
bool get_compressed() const
Return whether or not the message is flagged as compressed.
Definition: message.hpp:143
void set_payload(std::string const &payload)
Set payload data.
Definition: message.hpp:264
bool get_terminal() const
Get whether or not the message is terminal.
Definition: message.hpp:169
std::string const & get_header() const
Return the prepared frame header.
Definition: message.hpp:224
void set_payload(void const *payload, size_t len)
Set payload data.
Definition: message.hpp:275
bool get_fin() const
Read the fin bit.
Definition: message.hpp:195
void append_payload(void const *payload, size_t len)
Append payload data.
Definition: message.hpp:298
void set_opcode(frame::opcode::value op)
Set the opcode.
Definition: message.hpp:215
void set_prepared(bool value)
Set or clear the flag that indicates that the message has been prepared.
Definition: message.hpp:135
frame::opcode::value get_opcode() const
Return the message opcode.
Definition: message.hpp:210
void set_terminal(bool value)
Set the terminal flag.
Definition: message.hpp:181
bool get_prepared() const
Return whether or not the message has been prepared for sending.
Definition: message.hpp:125
void append_payload(std::string const &payload)
Append payload data.
Definition: message.hpp:287
void set_compressed(bool value)
Set or clear the compression flag.
Definition: message.hpp:156
message(const con_msg_man_ptr manager)
Construct an empty message.
Definition: message.hpp:96
void set_fin(bool value)
Set the fin bit.
Definition: message.hpp:205
std::string const & get_payload() const
Get a reference to the payload string.
Definition: message.hpp:246
Thread safe stub "random" integer generator.
Definition: none.hpp:46
int_type operator()()
advances the engine's state and returns the generated value
Definition: none.hpp:51
Server endpoint role based on the given config.
Basic ASIO endpoint socket component.
Definition: none.hpp:317
Asio based connection transport component.
Definition: connection.hpp:67
void set_proxy_timeout(long duration)
Set the proxy timeout duration (exception)
Definition: connection.hpp:261
void set_tcp_post_init_handler(tcp_init_handler h)
Sets the tcp post init handler.
Definition: connection.hpp:173
void set_proxy_basic_auth(std::string const &username, std::string const &password)
Set the basic auth credentials to use (exception)
Definition: connection.hpp:232
void set_proxy_timeout(long duration, lib::error_code &ec)
Set the proxy timeout duration (exception free)
Definition: connection.hpp:250
config::elog_type elog_type
Type of this transport's error logging policy.
Definition: connection.hpp:81
strand_ptr get_strand()
Get a pointer to this connection's strand.
Definition: connection.hpp:366
void async_read_at_least(size_t num_bytes, char *buf, size_t len, read_handler handler)
read at least num_bytes bytes into buf and then call handler.
Definition: connection.hpp:820
lib::error_code proxy_init(std::string const &authority)
initialize the proxy buffers and http parsers
Definition: connection.hpp:437
socket_con_type::ptr socket_con_ptr
Type of a shared pointer to the socket connection component.
Definition: connection.hpp:77
lib::error_code interrupt(interrupt_handler handler)
Trigger the on_interrupt handler.
config::alog_type alog_type
Type of this transport's access logging policy.
Definition: connection.hpp:79
void handle_async_write(write_handler handler, lib::asio::error_code const &ec, size_t)
Async write callback.
Definition: connection.hpp:980
void handle_timer(timer_ptr, timer_handler callback, lib::asio::error_code const &ec)
Timer callback.
Definition: connection.hpp:350
lib::error_code init_asio(io_service_ptr io_service)
Finish constructing the transport.
Definition: connection.hpp:461
void handle_post_init(timer_ptr post_timer, init_handler callback, lib::error_code const &ec)
Post init timeout callback.
Definition: connection.hpp:572
void async_shutdown(shutdown_handler callback)
close and clean up the underlying socket
lib::asio::error_code get_transport_ec() const
Get the internal transport error code for a closed/failed connection.
Definition: connection.hpp:389
config::socket_type::socket_con_type socket_con_type
Type of the socket connection component.
Definition: connection.hpp:75
lib::asio::io_service * io_service_ptr
Type of a pointer to the Asio io_service being used.
Definition: connection.hpp:89
void set_proxy(std::string const &uri)
Set the proxy to connect through (exception)
Definition: connection.hpp:198
void handle_post_init_timeout(timer_ptr, init_handler callback, lib::error_code const &ec)
Post init timeout callback.
Definition: connection.hpp:536
connection< config > type
Type of this connection transport component.
Definition: connection.hpp:70
void handle_async_shutdown_timeout(timer_ptr, init_handler callback, lib::error_code const &ec)
Async shutdown timeout handler.
void set_proxy(std::string const &uri, lib::error_code &ec)
Set the proxy to connect through (exception free)
Definition: connection.hpp:189
lib::shared_ptr< lib::asio::steady_timer > timer_ptr
Type of a pointer to the Asio timer class.
Definition: connection.hpp:93
void set_proxy_basic_auth(std::string const &username, std::string const &password, lib::error_code &ec)
Set the basic auth credentials to use (exception free)
Definition: connection.hpp:217
void async_write(const char *buf, size_t len, write_handler handler)
Initiate a potentially asyncronous write of the given buffer.
Definition: connection.hpp:906
void async_write(std::vector< buffer > const &bufs, write_handler handler)
Initiate a potentially asyncronous write of the given buffers.
Definition: connection.hpp:939
lib::shared_ptr< type > ptr
Type of a shared pointer to this connection transport component.
Definition: connection.hpp:72
timer_ptr set_timer(long duration, timer_handler callback)
Call back a function after a period of time.
Definition: connection.hpp:313
void set_tcp_init_handler(tcp_init_handler h)
Sets the tcp pre init handler (deprecated)
Definition: connection.hpp:158
void handle_proxy_read(init_handler callback, lib::asio::error_code const &ec, size_t)
Proxy read callback.
Definition: connection.hpp:742
void set_uri(uri_ptr u)
Set uri hook.
Definition: connection.hpp:130
std::string get_remote_endpoint() const
Get the remote endpoint address.
Definition: connection.hpp:281
ptr get_shared()
Get a shared pointer to this component.
Definition: connection.hpp:110
void cancel_socket_checked()
Cancel the underlying socket and log any errors.
void set_handle(connection_hdl hdl)
Set Connection Handle.
void set_tcp_pre_init_handler(tcp_init_handler h)
Sets the tcp pre init handler.
Definition: connection.hpp:144
lib::shared_ptr< lib::asio::io_service::strand > strand_ptr
Type of a pointer to the Asio io_service::strand being used.
Definition: connection.hpp:91
void init(init_handler callback)
Initialize transport for reading.
Definition: connection.hpp:411
connection_hdl get_handle() const
Get the connection handle.
Definition: connection.hpp:295
Asio based endpoint transport component.
Definition: endpoint.hpp:54
std::size_t run_one()
wraps the run_one method of the internal io_service object
Definition: endpoint.hpp:648
socket_type::socket_con_type socket_con_type
Type of the socket connection component.
Definition: endpoint.hpp:69
void stop_listening(lib::error_code &ec)
Stop listening (exception free)
Definition: endpoint.hpp:604
config::socket_type socket_type
Type of the socket policy.
Definition: endpoint.hpp:62
lib::shared_ptr< lib::asio::steady_timer > timer_ptr
Type of timer handle.
Definition: endpoint.hpp:87
void async_connect(transport_con_ptr tcon, uri_ptr u, connect_handler cb)
Initiate a new connection.
Definition: endpoint.hpp:849
void init_asio()
Initialize asio transport with internal io_service.
Definition: endpoint.hpp:249
config::elog_type elog_type
Type of the error logging policy.
Definition: endpoint.hpp:64
void init_logging(const lib::shared_ptr< alog_type > &a, const lib::shared_ptr< elog_type > &e)
Initialize logging.
Definition: endpoint.hpp:823
bool is_secure() const
Return whether or not the endpoint produces secure connections.
Definition: endpoint.hpp:172
void init_asio(io_service_ptr ptr)
initialize asio transport with external io_service
Definition: endpoint.hpp:212
lib::asio::ip::tcp::endpoint get_local_endpoint(lib::asio::error_code &ec)
Get local TCP endpoint.
Definition: endpoint.hpp:395
void set_reuse_addr(bool value)
Sets whether to use the SO_REUSEADDR flag when opening listening sockets.
Definition: endpoint.hpp:363
void set_tcp_init_handler(tcp_init_handler h)
Sets the tcp pre init handler (deprecated)
Definition: endpoint.hpp:302
void handle_timer(timer_ptr, timer_handler callback, lib::asio::error_code const &ec)
Timer handler.
Definition: endpoint.hpp:745
void start_perpetual()
Marks the endpoint as perpetual, stopping it from exiting when empty.
Definition: endpoint.hpp:689
void stop()
wraps the stop method of the internal io_service object
Definition: endpoint.hpp:653
std::size_t run()
wraps the run method of the internal io_service object
Definition: endpoint.hpp:640
void set_tcp_post_init_handler(tcp_init_handler h)
Sets the tcp post init handler.
Definition: endpoint.hpp:317
void set_listen_backlog(int backlog)
Sets the maximum length of the queue of pending connections.
Definition: endpoint.hpp:342
bool stopped() const
wraps the stopped method of the internal io_service object
Definition: endpoint.hpp:673
timer_ptr set_timer(long duration, timer_handler callback)
Call back a function after a period of time.
Definition: endpoint.hpp:717
void init_asio(io_service_ptr ptr, lib::error_code &ec)
initialize asio transport with external io_service (exception free)
Definition: endpoint.hpp:185
socket_con_type::ptr socket_con_ptr
Type of a shared pointer to the socket connection component.
Definition: endpoint.hpp:71
lib::error_code init(transport_con_ptr tcon)
Initialize a connection.
Definition: endpoint.hpp:1113
asio::connection< config > transport_con_type
Definition: endpoint.hpp:75
void init_asio(lib::error_code &ec)
Initialize asio transport with internal io_service (exception free)
Definition: endpoint.hpp:227
void async_accept(transport_con_ptr tcon, accept_handler callback)
Accept the next connection attempt and assign it to con.
Definition: endpoint.hpp:807
void listen(uint16_t port)
Set up endpoint for listening on a port.
Definition: endpoint.hpp:536
void listen(std::string const &host, std::string const &service, lib::error_code &ec)
Set up endpoint for listening on a host and service (exception free)
Definition: endpoint.hpp:556
endpoint< config > type
Type of this endpoint transport component.
Definition: endpoint.hpp:57
lib::asio::io_service & get_io_service()
Retrieve a reference to the endpoint's io_service.
Definition: endpoint.hpp:378
config::concurrency_type concurrency_type
Type of the concurrency policy.
Definition: endpoint.hpp:60
std::size_t poll()
wraps the poll method of the internal io_service object
Definition: endpoint.hpp:658
void stop_perpetual()
Clears the endpoint's perpetual flag, allowing it to exit when empty.
Definition: endpoint.hpp:701
lib::shared_ptr< lib::asio::ip::tcp::acceptor > acceptor_ptr
Type of a shared pointer to the acceptor being used.
Definition: endpoint.hpp:83
void listen(lib::asio::ip::tcp::endpoint const &ep)
Set up endpoint for listening manually.
Definition: endpoint.hpp:460
void handle_resolve_timeout(timer_ptr, connect_handler callback, lib::error_code const &ec)
DNS resolution timeout handler.
Definition: endpoint.hpp:944
void listen(lib::asio::ip::tcp::endpoint const &ep, lib::error_code &ec)
Set up endpoint for listening manually (exception free)
Definition: endpoint.hpp:412
transport_con_type::ptr transport_con_ptr
Definition: endpoint.hpp:78
lib::shared_ptr< lib::asio::io_service::work > work_ptr
Type of a shared pointer to an io_service work object.
Definition: endpoint.hpp:89
void reset()
wraps the reset method of the internal io_service object
Definition: endpoint.hpp:668
void set_tcp_pre_bind_handler(tcp_pre_bind_handler h)
Sets the tcp pre bind handler.
Definition: endpoint.hpp:274
config::alog_type alog_type
Type of the access logging policy.
Definition: endpoint.hpp:66
lib::asio::io_service * io_service_ptr
Type of a pointer to the ASIO io_service being used.
Definition: endpoint.hpp:81
void listen(InternetProtocol const &internet_protocol, uint16_t port)
Set up endpoint for listening with protocol and port.
Definition: endpoint.hpp:502
void set_tcp_pre_init_handler(tcp_init_handler h)
Sets the tcp pre init handler.
Definition: endpoint.hpp:288
void listen(std::string const &host, std::string const &service)
Set up endpoint for listening on a host and service.
Definition: endpoint.hpp:589
void handle_connect_timeout(transport_con_ptr tcon, timer_ptr, connect_handler callback, lib::error_code const &ec)
Asio connect timeout handler.
Definition: endpoint.hpp:1053
void async_accept(transport_con_ptr tcon, accept_handler callback, lib::error_code &ec)
Accept the next connection attempt and assign it to con (exception free)
Definition: endpoint.hpp:768
std::size_t poll_one()
wraps the poll_one method of the internal io_service object
Definition: endpoint.hpp:663
void listen(InternetProtocol const &internet_protocol, uint16_t port, lib::error_code &ec)
Set up endpoint for listening with protocol and port (exception free)
Definition: endpoint.hpp:481
void listen(uint16_t port, lib::error_code &ec)
Set up endpoint for listening on a port (exception free)
Definition: endpoint.hpp:520
bool is_listening() const
Check if the endpoint is listening.
Definition: endpoint.hpp:635
void stop_listening()
Stop listening.
Definition: endpoint.hpp:625
lib::shared_ptr< lib::asio::ip::tcp::resolver > resolver_ptr
Type of a shared pointer to the resolver being used.
Definition: endpoint.hpp:85
lib::function< lib::error_code(acceptor_ptr)> tcp_pre_bind_handler
Type of socket pre-bind handler.
Definition: endpoint.hpp:92
Asio transport error category.
Definition: base.hpp:184
lib::shared_ptr< type > ptr
Type of a shared pointer to this connection transport component.
Definition: connection.hpp:65
connection_hdl get_handle() const
Get the connection handle.
Definition: connection.hpp:313
config::alog_type alog_type
Type of this transport's access logging policy.
Definition: connection.hpp:70
lib::error_code dispatch(dispatch_handler handler)
Call given handler back within the transport's event system (if present)
Definition: connection.hpp:580
void async_shutdown(transport::shutdown_handler handler)
Perform cleanup on socket shutdown_handler.
Definition: connection.hpp:593
void set_write_handler(write_handler h)
Sets the write handler.
Definition: connection.hpp:350
void set_secure(bool value)
Set whether or not this connection is secure.
Definition: connection.hpp:257
void set_shutdown_handler(shutdown_handler h)
Sets the shutdown handler.
Definition: connection.hpp:400
connection< config > type
Type of this connection transport component.
Definition: connection.hpp:63
config::elog_type elog_type
Type of this transport's error logging policy.
Definition: connection.hpp:72
void fatal_error()
Signal transport error.
Definition: connection.hpp:235
size_t read_some(char const *buf, size_t len)
Manual input supply (read some)
Definition: connection.hpp:165
size_t read_all(char const *buf, size_t len)
Manual input supply (read all)
Definition: connection.hpp:188
void async_write(char const *buf, size_t len, transport::write_handler handler)
Asyncronous Transport Write.
Definition: connection.hpp:487
size_t readsome(char const *buf, size_t len)
Manual input supply (DEPRECATED)
Definition: connection.hpp:208
config::concurrency_type concurrency_type
transport concurrency policy
Definition: connection.hpp:68
void init(init_handler handler)
Initialize the connection transport.
Definition: connection.hpp:410
timer_ptr set_timer(long, timer_handler)
Call back a function after a period of time.
Definition: connection.hpp:327
void set_remote_endpoint(std::string value)
Set human readable remote endpoint address.
Definition: connection.hpp:289
friend std::istream & operator>>(std::istream &in, type &t)
Overloaded stream input operator.
Definition: connection.hpp:142
void set_vector_write_handler(vector_write_handler h)
Sets the vectored write handler.
Definition: connection.hpp:380
bool is_secure() const
Tests whether or not the underlying transport is secure.
Definition: connection.hpp:271
std::string get_remote_endpoint() const
Get human readable remote endpoint address.
Definition: connection.hpp:305
void set_handle(connection_hdl hdl)
Set Connection Handle.
Definition: connection.hpp:565
void register_ostream(std::ostream *o)
Register a std::ostream with the transport for writing output.
Definition: connection.hpp:104
void async_read_at_least(size_t num_bytes, char *buf, size_t len, read_handler handler)
Initiate an async_read for at least num_bytes bytes into buf.
Definition: connection.hpp:439
void async_write(std::vector< buffer > const &bufs, transport::write_handler handler)
Asyncronous Transport Write (scatter-gather)
Definition: connection.hpp:527
ptr get_shared()
Get a shared pointer to this component.
Definition: connection.hpp:93
iostream::connection< config > transport_con_type
Definition: endpoint.hpp:62
config::elog_type elog_type
Type of this endpoint's error logging policy.
Definition: endpoint.hpp:56
void set_write_handler(write_handler h)
Sets the write handler.
Definition: endpoint.hpp:134
void set_shutdown_handler(shutdown_handler h)
Sets the shutdown handler.
Definition: endpoint.hpp:154
bool is_secure() const
Tests whether or not the underlying transport is secure.
Definition: endpoint.hpp:116
lib::shared_ptr< type > ptr
Type of a pointer to this endpoint transport component.
Definition: endpoint.hpp:51
transport_con_type::ptr transport_con_ptr
Definition: endpoint.hpp:65
void async_connect(transport_con_ptr, uri_ptr, connect_handler cb)
Initiate a new connection.
Definition: endpoint.hpp:183
lib::error_code init(transport_con_ptr tcon)
Initialize a connection.
Definition: endpoint.hpp:197
void init_logging(lib::shared_ptr< alog_type > a, lib::shared_ptr< elog_type > e)
Initialize logging.
Definition: endpoint.hpp:171
endpoint type
Type of this endpoint transport component.
Definition: endpoint.hpp:49
void register_ostream(std::ostream *o)
Register a default output stream.
Definition: endpoint.hpp:80
config::concurrency_type concurrency_type
Type of this endpoint's concurrency policy.
Definition: endpoint.hpp:54
void set_secure(bool value)
Set whether or not endpoint can create secure connections.
Definition: endpoint.hpp:102
config::alog_type alog_type
Type of this endpoint's access logging policy.
Definition: endpoint.hpp:58
iostream transport error category
Definition: base.hpp:85
std::string get_query() const
Return the query portion.
Definition: uri.hpp:294
#define _WEBSOCKETPP_CONSTEXPR_TOKEN_
Definition: cpp11.hpp:132
#define _WEBSOCKETPP_NOEXCEPT_TOKEN_
Definition: cpp11.hpp:113
#define __has_extension
Definition: cpp11.hpp:40
#define __has_feature(x)
Definition: cpp11.hpp:37
Concurrency handling support.
Definition: basic.hpp:34
Library level error codes.
Definition: error.hpp:44
@ general
Catch-all library error.
Definition: error.hpp:47
@ unrequested_subprotocol
Selected subprotocol was not requested by the client.
Definition: error.hpp:102
@ invalid_port
Invalid port in URI.
Definition: error.hpp:120
@ client_only
Attempted to use a client specific feature on a server endpoint.
Definition: error.hpp:105
@ http_connection_ended
HTTP connection ended.
Definition: error.hpp:111
@ async_accept_not_listening
Definition: error.hpp:124
@ operation_canceled
The requested operation was canceled.
Definition: error.hpp:127
@ no_outgoing_buffers
The endpoint is out of outgoing message buffers.
Definition: error.hpp:68
@ http_parse_error
HTTP parse error.
Definition: error.hpp:143
@ reserved_close_code
Close code is in a reserved range.
Definition: error.hpp:80
@ con_creation_failed
Connection creation attempted failed.
Definition: error.hpp:99
@ no_incoming_buffers
The endpoint is out of incoming message buffers.
Definition: error.hpp:71
@ invalid_state
The connection was in the wrong state for this operation.
Definition: error.hpp:74
@ extension_neg_failed
Extension negotiation failed.
Definition: error.hpp:146
@ rejected
Connection rejected.
Definition: error.hpp:130
@ unsupported_version
Unsupported WebSocket protocol version.
Definition: error.hpp:140
@ invalid_utf8
Invalid UTF-8.
Definition: error.hpp:86
@ invalid_close_code
Close code is invalid.
Definition: error.hpp:83
@ server_only
Attempted to use a server specific feature on a client endpoint.
Definition: error.hpp:108
@ endpoint_not_secure
Attempted to open a secure connection with an insecure endpoint.
Definition: error.hpp:57
@ close_handshake_timeout
WebSocket close handshake timed out.
Definition: error.hpp:117
@ invalid_subprotocol
Invalid subprotocol.
Definition: error.hpp:89
@ bad_close_code
Unable to parse close code.
Definition: error.hpp:77
@ open_handshake_timeout
WebSocket opening handshake timed out.
Definition: error.hpp:114
@ invalid_version
Invalid WebSocket protocol version.
Definition: error.hpp:137
@ send_queue_full
send attempted when endpoint write queue was full
Definition: error.hpp:50
@ test
Unit testing utility error code.
Definition: error.hpp:96
@ invalid_uri
An invalid uri was supplied.
Definition: error.hpp:65
Implementation of RFC 7692, the permessage-deflate WebSocket extension.
Definition: disabled.hpp:44
Constants related to frame and payload limits.
Definition: frame.hpp:145
static uint8_t const close_reason_size
Maximum size of close frame reason.
Definition: frame.hpp:169
static uint64_t const payload_size_jumbo
Maximum size of a jumbo WebSocket payload (basic payload = 127)
Definition: frame.hpp:162
static unsigned int const max_extended_header_length
Maximum length of the variable portion of the WebSocket header.
Definition: frame.hpp:153
static unsigned int const max_header_length
Maximum length of a WebSocket header.
Definition: frame.hpp:150
static uint16_t const payload_size_extended
Maximum size of an extended WebSocket payload (basic payload = 126)
Definition: frame.hpp:159
static uint8_t const payload_size_basic
Maximum size of a basic WebSocket payload.
Definition: frame.hpp:156
static unsigned int const basic_header_length
Minimum length of a WebSocket frame header.
Definition: frame.hpp:147
Constants and utility functions related to WebSocket opcodes.
Definition: frame.hpp:76
bool invalid(value v)
Check if an opcode is invalid.
Definition: frame.hpp:130
bool reserved(value v)
Check if an opcode is reserved.
Definition: frame.hpp:118
bool is_control(value v)
Check if an opcode is for a control frame.
Definition: frame.hpp:139
Data structures and utility functions for manipulating WebSocket frames.
Definition: frame.hpp:45
unsigned int get_masking_key_offset(basic_header const &)
Calculate the offset location of the masking key within the extended header.
Definition: frame.hpp:469
void set_rsv2(basic_header &h, bool value)
Set the frame's RSV2 bit.
Definition: frame.hpp:366
static unsigned int const MAX_HEADER_LENGTH
Maximum length of a WebSocket header.
Definition: frame.hpp:50
opcode::value get_opcode(basic_header const &h)
Extract opcode from basic header.
Definition: frame.hpp:393
void set_rsv3(basic_header &h, bool value)
Set the frame's RSV3 bit.
Definition: frame.hpp:384
uint64_t get_payload_size(basic_header const &, extended_header const &)
Extract the full payload size field from a WebSocket header.
Definition: frame.hpp:573
uint8_t get_basic_size(basic_header const &)
Extracts the raw payload length specified in the basic header.
Definition: frame.hpp:431
size_t byte_mask_circ(uint8_t *input, uint8_t *output, size_t length, size_t prepared_key)
Circular byte aligned mask/unmask.
Definition: frame.hpp:830
void byte_mask(input_iter b, input_iter e, output_iter o, masking_key_type const &key, size_t key_offset=0)
Byte by byte mask/unmask.
Definition: frame.hpp:645
static unsigned int const MAX_EXTENDED_HEADER_LENGTH
Maximum length of the variable portion of the WebSocket header.
Definition: frame.hpp:52
bool get_rsv3(basic_header const &h)
check whether the frame's RSV3 bit is set
Definition: frame.hpp:375
bool get_masked(basic_header const &h)
check whether the frame is masked
Definition: frame.hpp:402
bool get_rsv2(basic_header const &h)
check whether the frame's RSV2 bit is set
Definition: frame.hpp:357
void byte_mask(iter_type b, iter_type e, masking_key_type const &key, size_t key_offset=0)
Byte by byte mask/unmask (in place)
Definition: frame.hpp:675
uint16_t get_extended_size(extended_header const &)
Extract the extended size field from an extended header.
Definition: frame.hpp:540
size_t byte_mask_circ(uint8_t *data, size_t length, size_t prepared_key)
Circular byte aligned mask/unmask (in place)
Definition: frame.hpp:857
bool get_fin(basic_header const &h)
Check whether the frame's FIN bit is set.
Definition: frame.hpp:321
size_t circshift_prepared_key(size_t prepared_key, size_t offset)
circularly shifts the supplied prepared masking key by offset bytes
Definition: frame.hpp:612
bool get_rsv1(basic_header const &h)
check whether the frame's RSV1 bit is set
Definition: frame.hpp:339
void set_masked(basic_header &h, bool value)
Set the frame's MASK bit.
Definition: frame.hpp:411
size_t word_mask_circ(uint8_t *input, uint8_t *output, size_t length, size_t prepared_key)
Circular word aligned mask/unmask.
Definition: frame.hpp:768
void word_mask_exact(uint8_t *data, size_t length, masking_key_type const &key)
Exact word aligned mask/unmask (in place)
Definition: frame.hpp:731
void set_rsv1(basic_header &h, bool value)
Set the frame's RSV1 bit.
Definition: frame.hpp:348
size_t get_header_len(basic_header const &)
Calculates the full length of the header based on the first bytes.
Definition: frame.hpp:445
void set_fin(basic_header &h, bool value)
Set the frame's FIN bit.
Definition: frame.hpp:330
uint64_t get_jumbo_size(extended_header const &)
Extract the jumbo size field from an extended header.
Definition: frame.hpp:555
void word_mask_exact(uint8_t *input, uint8_t *output, size_t length, masking_key_type const &key)
Exact word aligned mask/unmask.
Definition: frame.hpp:702
std::string prepare_header(const basic_header &h, const extended_header &e)
Generate a properly sized contiguous string that encodes a full frame header.
Definition: frame.hpp:489
masking_key_type get_masking_key(basic_header const &, extended_header const &)
Extract the masking key from a frame header.
Definition: frame.hpp:516
static unsigned int const BASIC_HEADER_LENGTH
Minimum length of a WebSocket frame header.
Definition: frame.hpp:48
size_t word_mask_circ(uint8_t *data, size_t length, size_t prepared_key)
Circular word aligned mask/unmask (in place)
Definition: frame.hpp:805
size_t prepare_masking_key(masking_key_type const &key)
Extract a masking key into a value the size of a machine word.
Definition: frame.hpp:595
HTTP handling support.
Definition: request.hpp:37
size_t const max_body_size
Default Maximum size in bytes for HTTP message bodies.
Definition: constants.hpp:68
static char const header_separator[]
Literal value of the HTTP header separator.
Definition: constants.hpp:59
std::vector< std::pair< std::string, attribute_list > > parameter_list
The type of an HTTP parameter list.
Definition: constants.hpp:53
size_t const istream_buffer
Number of bytes to use for temporary istream read buffers.
Definition: constants.hpp:71
bool is_not_token_char(unsigned char c)
Is the character a non-token.
Definition: constants.hpp:103
size_t const max_header_size
Maximum size in bytes before rejecting an HTTP header as too big.
Definition: constants.hpp:65
static char const header_delimiter[]
Literal value of the HTTP header delimiter.
Definition: constants.hpp:56
bool is_whitespace_char(unsigned char c)
Is the character whitespace.
Definition: constants.hpp:111
static char const header_token[]
invalid HTTP token characters
Definition: constants.hpp:78
bool is_not_whitespace_char(unsigned char c)
Is the character non-whitespace.
Definition: constants.hpp:116
std::map< std::string, std::string > attribute_list
The type of an HTTP attribute list.
Definition: constants.hpp:45
bool is_token_char(unsigned char c)
Is the character a token.
Definition: constants.hpp:98
static std::string const empty_header
Literal value of an empty header.
Definition: constants.hpp:62
Stub RNG policy that always returns 0.
Definition: none.hpp:35
Random number generation policies.
Asio transport errors.
Definition: base.hpp:161
lib::error_category const & get_category()
Get a reference to a static copy of the asio transport error category.
Definition: base.hpp:211
lib::error_code make_error_code(error::value e)
Create an error code with the given value and the asio transport category.
Definition: base.hpp:217
@ proxy_invalid
Invalid Proxy URI.
Definition: base.hpp:177
@ pass_through
there was an error in the underlying transport library
Definition: base.hpp:171
@ proxy_failed
The connection to the requested proxy server failed.
Definition: base.hpp:174
@ invalid_num_bytes
async_read_at_least call requested more bytes than buffer can store
Definition: base.hpp:168
@ invalid_host_service
Invalid host or service.
Definition: base.hpp:180
Transport policy that uses asio.
Definition: endpoint.hpp:46
Generic transport related errors.
Definition: connection.hpp:146
@ pass_through
underlying transport pass through
Definition: connection.hpp:153
@ operation_not_supported
Operation not supported.
Definition: connection.hpp:165
@ operation_aborted
Operation aborted.
Definition: connection.hpp:162
@ tls_error
Other TLS error.
Definition: connection.hpp:180
@ invalid_num_bytes
async_read_at_least call requested more bytes than buffer can store
Definition: connection.hpp:156
@ action_after_shutdown
read or write after shutdown
Definition: connection.hpp:177
@ tls_short_read
TLS short read.
Definition: connection.hpp:171
@ double_read
async_read called while another async_read was in progress
Definition: connection.hpp:159
iostream transport errors
Definition: base.hpp:64
@ invalid_num_bytes
async_read_at_least call requested more bytes than buffer can store
Definition: base.hpp:71
@ double_read
async_read called while another async_read was in progress
Definition: base.hpp:74
lib::error_code make_error_code(error::value e)
Get an error code with the given value and the iostream transport category.
Definition: base.hpp:118
lib::error_category const & get_category()
Get a reference to a static copy of the iostream transport error category.
Definition: base.hpp:112
Transport policy that uses STL iostream for I/O and does not support timers.
Definition: endpoint.hpp:43
lib::function< lib::error_code(connection_hdl, std::vector< transport::buffer > const &bufs)> vector_write_handler
Definition: base.hpp:57
lib::function< lib::error_code(connection_hdl)> shutdown_handler
Definition: base.hpp:61
lib::function< lib::error_code(connection_hdl, char const *, size_t)> write_handler
The type and signature of the callback used by iostream transport to write.
Definition: base.hpp:48
Transport policies provide network connectivity and timers.
Definition: endpoint.hpp:45
lib::function< void(lib::error_code const &, size_t)> read_handler
The type and signature of the callback passed to the read method.
Definition: connection.hpp:120
lib::function< void()> dispatch_handler
The type and signature of the callback passed to the dispatch method.
Definition: connection.hpp:135
lib::function< void()> interrupt_handler
The type and signature of the callback passed to the interrupt method.
Definition: connection.hpp:132
lib::function< void(lib::error_code const &)> accept_handler
The type and signature of the callback passed to the accept method.
Definition: endpoint.hpp:69
lib::function< void(lib::error_code const &)> timer_handler
The type and signature of the callback passed to the read method.
Definition: connection.hpp:126
lib::function< void(lib::error_code const &)> connect_handler
The type and signature of the callback passed to the connect method.
Definition: endpoint.hpp:72
lib::function< void(lib::error_code const &)> write_handler
The type and signature of the callback passed to the write method.
Definition: connection.hpp:123
lib::function< void(lib::error_code const &)> init_handler
The type and signature of the callback passed to the init hook.
Definition: connection.hpp:117
lib::function< void(lib::error_code const &)> shutdown_handler
The type and signature of the callback passed to the shutdown method.
Definition: connection.hpp:129
Generic non-websocket specific utility functions and data structures.
Definition: utilities.hpp:39
std::string to_hex(std::string const &input)
Convert std::string to ascii printed string of hex digits.
std::string to_hex(uint8_t const *input, size_t length)
Convert byte array (uint8_t) to ascii printed string of hex digits.
T::const_iterator ci_find_substr(T const &haystack, T const &needle, std::locale const &loc=std::locale())
Find substring (case insensitive)
Definition: utilities.hpp:101
std::string string_replace_all(std::string subject, std::string const &search, std::string const &replace)
Replace all occurrances of a substring with another.
T::const_iterator ci_find_substr(T const &haystack, typename T::value_type const *needle, typename T::size_type size, std::locale const &loc=std::locale())
Find substring (case insensitive)
Definition: utilities.hpp:123
std::string to_hex(char const *input, size_t length)
Convert char array to ascii printed string of hex digits.
std::string to_lower(std::string const &in)
Convert a string to lowercase.
Namespace for the WebSocket++ project.
std::string base64_decode(std::string const &input)
Decode a base64 encoded string into a string of raw bytes.
Definition: base64.hpp:131
std::string base64_encode(std::string const &input)
Encode a string into a base64 string.
Definition: base64.hpp:119
static uint16_t const uri_default_secure_port
Default port for wss://.
Definition: uri.hpp:47
lib::weak_ptr< void > connection_hdl
A handle to uniquely identify a connection.
static uint16_t const uri_default_port
Default port for ws://.
Definition: uri.hpp:45
lib::shared_ptr< uri > uri_ptr
Pointer to a URI.
Definition: uri.hpp:352
std::pair< lib::error_code, std::string > err_str_pair
Combination error code / string type for returning two values.
Definition: error.hpp:41
static bool is_base64(unsigned char c)
Test whether a character is a valid base64 character.
Definition: base64.hpp:53
std::string base64_encode(unsigned char const *input, size_t len)
Encode a char buffer into a base64 string.
Definition: base64.hpp:66
#define TYP_BIGE
Definition: network.hpp:53
#define TYP_SMLE
Definition: network.hpp:52
#define TYP_INIT
Definition: network.hpp:51
Server config with asio transport and TLS disabled.
Definition: asio_no_tls.hpp:38
static const long timeout_socket_shutdown
Length of time to wait for socket shutdown.
Definition: core.hpp:137
static const long timeout_connect
Length of time to wait for TCP connect.
Definition: core.hpp:134
static const long timeout_dns_resolve
Length of time to wait for dns resolution.
Definition: core.hpp:131
static const long timeout_proxy
Length of time to wait before a proxy handshake is aborted.
Definition: core.hpp:121
static const long timeout_socket_pre_init
Default timer values (in ms)
Definition: core.hpp:118
static const long timeout_socket_post_init
Length of time to wait for socket post-initialization.
Definition: core.hpp:128
Server config with iostream transport.
Definition: core.hpp:68
websocketpp::random::none::int_generator< uint32_t > rng_type
RNG policies.
Definition: core.hpp:93
static const websocketpp::log::level elog_level
Default static error logging channels.
Definition: core.hpp:176
websocketpp::transport::iostream::endpoint< transport_config > transport_type
Transport Endpoint Component.
Definition: core.hpp:142
static const size_t max_http_body_size
Default maximum http body size.
Definition: core.hpp:252
static const long timeout_open_handshake
Default timer values (in ms)
Definition: core.hpp:152
static const size_t max_message_size
Default maximum message size.
Definition: core.hpp:240
static const bool drop_on_protocol_error
Drop connections immediately on protocol error.
Definition: core.hpp:213
static const long timeout_close_handshake
Length of time before a closing handshake is aborted.
Definition: core.hpp:154
static const websocketpp::log::level alog_level
Default static access logging channels.
Definition: core.hpp:189
websocketpp::log::basic< concurrency_type, websocketpp::log::elevel > elog_type
Logging policies.
Definition: core.hpp:88
static const long timeout_pong
Length of time to wait for a pong after a ping.
Definition: core.hpp:156
static const bool silent_close
Suppresses the return of detailed connection close information.
Definition: core.hpp:228
static bool const enable_multithreading
Definition: core.hpp:98
static const size_t connection_read_buffer_size
Size of the per-connection read buffer.
Definition: core.hpp:204
static const bool enable_extensions
Global flag for enabling/disabling extensions.
Definition: core.hpp:255
static const int client_version
WebSocket Protocol version to use as a client.
Definition: core.hpp:164
The constant size component of a WebSocket frame header.
Definition: frame.hpp:189
The variable size component of a WebSocket frame header.
Definition: frame.hpp:235
Package of log levels for logging access events.
Definition: levels.hpp:112
static char const * channel_name(level channel)
Get the textual name of a channel given a channel id.
Definition: levels.hpp:164
static level const fail
One line for each failed WebSocket connection with details.
Definition: levels.hpp:147
static level const none
Special aggregate value representing "no levels".
Definition: levels.hpp:114
static level const debug_handshake
Extra information about opening handshakes.
Definition: levels.hpp:137
static level const devel
Development messages (warning: very chatty)
Definition: levels.hpp:141
static level const all
Special aggregate value representing "all levels".
Definition: levels.hpp:152
static level const debug_close
Extra information about closing handshakes.
Definition: levels.hpp:139
static level const frame_payload
One line per frame, includes the full message payload (warning: chatty)
Definition: levels.hpp:129
static level const connect
Information about new connections.
Definition: levels.hpp:121
static level const app
Special channel for application specific logs. Not used by the library.
Definition: levels.hpp:143
static level const frame_header
One line per frame, includes the full frame header.
Definition: levels.hpp:127
static level const message_payload
Reserved.
Definition: levels.hpp:133
static level const endpoint
Reserved.
Definition: levels.hpp:135
static level const message_header
Reserved.
Definition: levels.hpp:131
static level const control
One line per control frame.
Definition: levels.hpp:125
static level const disconnect
One line for each closed connection. Includes closing codes and reasons.
Definition: levels.hpp:123
static level const access_core
Definition: levels.hpp:150
static level const http
Access related to HTTP requests.
Definition: levels.hpp:145
Package of values for hinting at the nature of a given logger.
Definition: levels.hpp:46
static value const none
No information.
Definition: levels.hpp:51
static value const access
Access log.
Definition: levels.hpp:53
static value const error
Error log.
Definition: levels.hpp:55
uint32_t value
Type of a channel type hint value.
Definition: levels.hpp:48
Package of log levels for logging errors.
Definition: levels.hpp:59
static level const devel
Low level debugging information (warning: very chatty)
Definition: levels.hpp:63
static char const * channel_name(level channel)
Get the textual name of a channel given a channel id.
Definition: levels.hpp:91
static level const library
Definition: levels.hpp:66
static level const info
Definition: levels.hpp:69
static level const all
Special aggregate value representing "all levels".
Definition: levels.hpp:80
static level const fatal
Definition: levels.hpp:78
static level const none
Special aggregate value representing "no levels".
Definition: levels.hpp:61
static level const rerror
Definition: levels.hpp:75
static level const warn
Definition: levels.hpp:72
A simple utility buffer class.
Definition: connection.hpp:138
Helper less than functor for case insensitive find.
Definition: utilities.hpp:75
Helper functor for case insensitive find.
Definition: utilities.hpp:49
bool operator()(charT ch1, charT ch2)
Perform a case insensitive comparison.
Definition: utilities.hpp:63
my_equal(std::locale const &loc)
Construct the functor with the given locale.
Definition: utilities.hpp:54
#define _WEBSOCKETPP_ERROR_CODE_ENUM_NS_END_
#define _WEBSOCKETPP_ERROR_CODE_ENUM_NS_START_
Two byte conversion union.
Definition: frame.hpp:55
Four byte conversion union.
Definition: frame.hpp:61
Eight byte conversion union.
Definition: frame.hpp:67