WebSocket++
0.8.3-dev
C++ websocket client/server library
|
Creates and manages connections associated with a WebSocket endpoint. More...
#include <endpoint.hpp>
Public Types | |
typedef endpoint< connection, config > | type |
typedef config::transport_type | transport_type |
Type of the transport component of this endpoint. | |
typedef config::concurrency_type | concurrency_type |
Type of the concurrency component of this endpoint. | |
typedef connection | connection_type |
Type of the connections that this endpoint creates. | |
typedef connection_type::ptr | connection_ptr |
Shared pointer to connection_type. | |
typedef connection_type::weak_ptr | connection_weak_ptr |
Weak pointer to connection type. | |
typedef transport_type::transport_con_type | transport_con_type |
typedef transport_con_type::ptr | transport_con_ptr |
typedef connection_type::message_handler | message_handler |
Type of message_handler. | |
typedef connection_type::message_ptr | message_ptr |
Type of message pointers that this endpoint uses. | |
typedef config::elog_type | elog_type |
Type of error logger. | |
typedef config::alog_type | alog_type |
Type of access logger. | |
typedef concurrency_type::scoped_lock_type | scoped_lock_type |
Type of our concurrency policy's scoped lock object. | |
typedef concurrency_type::mutex_type | mutex_type |
Type of our concurrency policy's mutex object. | |
typedef config::rng_type | rng_type |
Type of RNG. | |
typedef connection_type::termination_handler | termination_handler |
Public Member Functions | |
endpoint (bool p_is_server) | |
~endpoint () | |
Destructor. | |
std::string | get_user_agent () const |
Returns the user agent string that this endpoint will use. More... | |
void | set_user_agent (std::string const &ua) |
Sets the user agent string that this endpoint will use. More... | |
bool | is_server () const |
Returns whether or not this endpoint is a server. More... | |
void | set_access_channels (log::level channels) |
Set Access logging channel. More... | |
void | clear_access_channels (log::level channels) |
Clear Access logging channels. More... | |
void | set_error_channels (log::level channels) |
Set Error logging channel. More... | |
void | clear_error_channels (log::level channels) |
Clear Error logging channels. More... | |
alog_type & | get_alog () |
Get reference to access logger. More... | |
elog_type & | get_elog () |
Get reference to error logger. More... | |
void | set_open_handler (open_handler h) |
void | set_close_handler (close_handler h) |
void | set_fail_handler (fail_handler h) |
void | set_ping_handler (ping_handler h) |
void | set_pong_handler (pong_handler h) |
void | set_pong_timeout_handler (pong_timeout_handler h) |
void | set_interrupt_handler (interrupt_handler h) |
void | set_http_handler (http_handler h) |
void | set_validate_handler (validate_handler h) |
void | set_message_handler (message_handler h) |
void | set_open_handshake_timeout (long dur) |
Set open handshake timeout. More... | |
void | set_close_handshake_timeout (long dur) |
Set close handshake timeout. More... | |
void | set_pong_timeout (long dur) |
Set pong timeout. More... | |
size_t | get_max_message_size () const |
Get default maximum message size. More... | |
void | set_max_message_size (size_t new_value) |
Set default maximum message size. More... | |
size_t | get_max_http_body_size () const |
Get maximum HTTP message body size. More... | |
void | set_max_http_body_size (size_t new_value) |
Set maximum HTTP message body size. More... | |
void | interrupt (connection_hdl hdl, lib::error_code &ec) |
void | interrupt (connection_hdl hdl) |
void | pause_reading (connection_hdl hdl, lib::error_code &ec) |
Pause reading of new data (exception free) More... | |
void | pause_reading (connection_hdl hdl) |
Pause reading of new data. | |
void | resume_reading (connection_hdl hdl, lib::error_code &ec) |
Resume reading of new data (exception free) More... | |
void | resume_reading (connection_hdl hdl) |
Resume reading of new data. | |
void | send_http_response (connection_hdl hdl, lib::error_code &ec) |
Send deferred HTTP Response. More... | |
void | send_http_response (connection_hdl hdl) |
Send deferred HTTP Response (exception free) More... | |
void | send (connection_hdl hdl, std::string const &payload, frame::opcode::value op, lib::error_code &ec) |
Create a message and add it to the outgoing send queue (exception free) More... | |
void | send (connection_hdl hdl, std::string const &payload, frame::opcode::value op) |
Create a message and add it to the outgoing send queue. More... | |
void | send (connection_hdl hdl, void const *payload, size_t len, frame::opcode::value op, lib::error_code &ec) |
void | send (connection_hdl hdl, void const *payload, size_t len, frame::opcode::value op) |
void | send (connection_hdl hdl, message_ptr msg, lib::error_code &ec) |
void | send (connection_hdl hdl, message_ptr msg) |
void | close (connection_hdl hdl, close::status::value const code, std::string const &reason, lib::error_code &ec) |
void | close (connection_hdl hdl, close::status::value const code, std::string const &reason) |
void | ping (connection_hdl hdl, std::string const &payload, lib::error_code &ec) |
Send a ping to a specific connection. More... | |
void | ping (connection_hdl hdl, std::string const &payload) |
Send a ping to a specific connection. More... | |
void | pong (connection_hdl hdl, std::string const &payload, lib::error_code &ec) |
Send a pong to a specific connection. More... | |
void | pong (connection_hdl hdl, std::string const &payload) |
Send a pong to a specific connection. More... | |
connection_ptr | get_con_from_hdl (connection_hdl hdl, lib::error_code &ec) |
Retrieves a connection_ptr from a connection_hdl (exception free) More... | |
connection_ptr | get_con_from_hdl (connection_hdl hdl) |
Retrieves a connection_ptr from a connection_hdl (exception version) | |
Protected Member Functions | |
connection_ptr | create_connection () |
Protected Attributes | |
lib::shared_ptr< alog_type > | m_alog |
lib::shared_ptr< elog_type > | m_elog |
Creates and manages connections associated with a WebSocket endpoint.
Definition at line 42 of file endpoint.hpp.
typedef transport_con_type::ptr websocketpp::endpoint< connection, config >::transport_con_ptr |
Type of a shared pointer to the transport component of the connections that this endpoint creates.
Definition at line 65 of file endpoint.hpp.
typedef transport_type::transport_con_type websocketpp::endpoint< connection, config >::transport_con_type |
Type of the transport component of the connections that this endpoint creates
Definition at line 62 of file endpoint.hpp.
|
inline |
Clear Access logging channels.
Clear the access logger's channel value. The value is a number whose interpretation depends on the logging policy in use.
channels | The channel value(s) to clear |
Definition at line 231 of file endpoint.hpp.
|
inline |
Clear Error logging channels.
Clear the error logger's channel value. The value is a number whose interpretation depends on the logging policy in use.
channels | The channel value(s) to clear |
Definition at line 253 of file endpoint.hpp.
|
inline |
Get reference to access logger.
Definition at line 261 of file endpoint.hpp.
|
inline |
Retrieves a connection_ptr from a connection_hdl (exception free)
Converting a weak pointer to shared_ptr is not thread safe because the pointer could be deleted at any time.
NOTE: This method may be called by handler to upgrade its handle to a full connection_ptr. That full connection may then be used safely for the remainder of the handler body. get_con_from_hdl and the resulting connection_ptr are NOT safe to use outside the handler loop.
hdl | The connection handle to translate |
Definition at line 643 of file endpoint.hpp.
|
inline |
Get reference to error logger.
Definition at line 269 of file endpoint.hpp.
|
inline |
Get maximum HTTP message body size.
Get maximum HTTP message body size. Maximum message body size determines the point at which the connection will stop reading an HTTP request whose body is too large.
The default is set by the max_http_body_size value from the template config
Definition at line 449 of file endpoint.hpp.
|
inline |
Get default maximum message size.
Get the default maximum message size that will be used for new connections created by this endpoint. The maximum message size determines the point at which the connection will fail a connection with the message_too_big protocol error.
The default is set by the max_message_size value from the template config
Definition at line 415 of file endpoint.hpp.
|
inline |
Returns the user agent string that this endpoint will use.
Returns the user agent string that this endpoint will use when creating new connections.
The default value for this version is stored in websocketpp::user_agent
Definition at line 169 of file endpoint.hpp.
void websocketpp::endpoint< connection, config >::interrupt | ( | connection_hdl | hdl, |
lib::error_code & | ec | ||
) |
These functions act as adaptors to their counterparts in connection. They can produce one additional type of error, the bad_connection error, that indicates that the conversion from connection_hdl to connection_ptr failed due to the connection not existing anymore. Each method has a default and an exception free varient.
Definition at line 96 of file endpoint_impl.hpp.
|
inline |
Returns whether or not this endpoint is a server.
Definition at line 205 of file endpoint.hpp.
void websocketpp::endpoint< connection, config >::pause_reading | ( | connection_hdl | hdl, |
lib::error_code & | ec | ||
) |
Pause reading of new data (exception free)
Signals to the connection to halt reading of new data. While reading is paused, the connection will stop reading from its associated socket. In turn this will result in TCP based flow control kicking in and slowing data flow from the remote endpoint.
This is useful for applications that push new requests to a queue to be processed by another thread and need a way to signal when their request queue is full without blocking the network processing thread.
Use resume_reading()
to resume.
If supported by the transport this is done asynchronously. As such reading may not stop until the current read operation completes. Typically you can expect to receive no more bytes after initiating a read pause than the size of the read buffer.
If reading is paused for this connection already nothing is changed.
Definition at line 114 of file endpoint_impl.hpp.
void websocketpp::endpoint< connection, config >::ping | ( | connection_hdl | hdl, |
std::string const & | payload | ||
) |
Send a ping to a specific connection.
Exception variant of ping
[in] | hdl | The connection_hdl of the connection to send to. |
[in] | payload | The payload string to send. |
Definition at line 243 of file endpoint_impl.hpp.
void websocketpp::endpoint< connection, config >::ping | ( | connection_hdl | hdl, |
std::string const & | payload, | ||
lib::error_code & | ec | ||
) |
Send a ping to a specific connection.
[in] | hdl | The connection_hdl of the connection to send to. |
[in] | payload | The payload string to send. |
[out] | ec | A reference to an error code to fill in |
Definition at line 234 of file endpoint_impl.hpp.
void websocketpp::endpoint< connection, config >::pong | ( | connection_hdl | hdl, |
std::string const & | payload | ||
) |
Send a pong to a specific connection.
Exception variant of pong
[in] | hdl | The connection_hdl of the connection to send to. |
[in] | payload | The payload string to send. |
Definition at line 260 of file endpoint_impl.hpp.
void websocketpp::endpoint< connection, config >::pong | ( | connection_hdl | hdl, |
std::string const & | payload, | ||
lib::error_code & | ec | ||
) |
Send a pong to a specific connection.
[in] | hdl | The connection_hdl of the connection to send to. |
[in] | payload | The payload string to send. |
[out] | ec | A reference to an error code to fill in |
Definition at line 251 of file endpoint_impl.hpp.
void websocketpp::endpoint< connection, config >::resume_reading | ( | connection_hdl | hdl, |
lib::error_code & | ec | ||
) |
Resume reading of new data (exception free)
Signals to the connection to resume reading of new data after it was paused by pause_reading()
.
If reading is not paused for this connection already nothing is changed.
Definition at line 130 of file endpoint_impl.hpp.
void websocketpp::endpoint< connection, config >::send | ( | connection_hdl | hdl, |
std::string const & | payload, | ||
frame::opcode::value | op | ||
) |
Create a message and add it to the outgoing send queue.
Convenience method to send a message given a payload string and an opcode
[in] | hdl | The handle identifying the connection to send via. |
[in] | payload | The payload string to generated the message with |
[in] | op | The opcode to generated the message with. |
[out] | ec | A code to fill in for errors |
Definition at line 172 of file endpoint_impl.hpp.
void websocketpp::endpoint< connection, config >::send | ( | connection_hdl | hdl, |
std::string const & | payload, | ||
frame::opcode::value | op, | ||
lib::error_code & | ec | ||
) |
Create a message and add it to the outgoing send queue (exception free)
Convenience method to send a message given a payload string and an opcode
[in] | hdl | The handle identifying the connection to send via. |
[in] | payload | The payload string to generated the message with |
[in] | op | The opcode to generated the message with. |
[out] | ec | A code to fill in for errors |
Definition at line 162 of file endpoint_impl.hpp.
void websocketpp::endpoint< connection, config >::send_http_response | ( | connection_hdl | hdl | ) |
Send deferred HTTP Response (exception free)
Sends an http response to an HTTP connection that was deferred. This will send a complete response including all headers, status line, and body text. The connection will be closed afterwards.
Exception variant
hdl | The connection to send the response on |
Definition at line 155 of file endpoint_impl.hpp.
void websocketpp::endpoint< connection, config >::send_http_response | ( | connection_hdl | hdl, |
lib::error_code & | ec | ||
) |
Send deferred HTTP Response.
Sends an http response to an HTTP connection that was deferred. This will send a complete response including all headers, status line, and body text. The connection will be closed afterwards.
Exception free variant
hdl | The connection to send the response on |
ec | A status code, zero on success, non-zero otherwise |
Definition at line 146 of file endpoint_impl.hpp.
|
inline |
Set Access logging channel.
Set the access logger's channel value. The value is a number whose interpretation depends on the logging policy in use.
channels | The channel value(s) to set |
Definition at line 220 of file endpoint.hpp.
|
inline |
Set close handshake timeout.
Sets the length of time the library will wait after a closing handshake has been initiated before cancelling it. This can be used to prevent excessive wait times for outgoing clients or excessive resource usage from broken clients or DoS attacks on servers.
Connections that time out will have their close handlers called with the close_handshake_timeout error code.
The default value is specified via the compile time config value 'timeout_close_handshake'. The default value in the core config is 5000ms. A value of 0 will disable the timer entirely.
To be effective, the transport you are using must support timers. See the documentation for your transport policy for details about its timer support.
dur | The length of the close handshake timeout in ms |
Definition at line 377 of file endpoint.hpp.
|
inline |
Set Error logging channel.
Set the error logger's channel value. The value is a number whose interpretation depends on the logging policy in use.
channels | The channel value(s) to set |
Definition at line 242 of file endpoint.hpp.
|
inline |
Set maximum HTTP message body size.
Set maximum HTTP message body size. Maximum message body size determines the point at which the connection will stop reading an HTTP request whose body is too large.
The default is set by the max_http_body_size value from the template config
new_value | The value to set as the maximum message size. |
Definition at line 466 of file endpoint.hpp.
|
inline |
Set default maximum message size.
Set the default maximum message size that will be used for new connections created by this endpoint. Maximum message size determines the point at which the connection will fail a connection with the message_too_big protocol error.
The default is set by the max_message_size value from the template config
new_value | The value to set as the maximum message size. |
Definition at line 432 of file endpoint.hpp.
|
inline |
Set open handshake timeout.
Sets the length of time the library will wait after an opening handshake has been initiated before cancelling it. This can be used to prevent excessive wait times for outgoing clients or excessive resource usage from broken clients or DoS attacks on servers.
Connections that time out will have their fail handlers called with the open_handshake_timeout error code.
The default value is specified via the compile time config value 'timeout_open_handshake'. The default value in the core config is 5000ms. A value of 0 will disable the timer entirely.
To be effective, the transport you are using must support timers. See the documentation for your transport policy for details about its timer support.
dur | The length of the open handshake timeout in ms |
Definition at line 352 of file endpoint.hpp.
|
inline |
Set pong timeout.
Sets the length of time the library will wait for a pong response to a ping. This can be used as a keepalive or to detect broken connections.
Pong responses that time out will have the pong timeout handler called.
The default value is specified via the compile time config value 'timeout_pong'. The default value in the core config is 5000ms. A value of 0 will disable the timer entirely.
To be effective, the transport you are using must support timers. See the documentation for your transport policy for details about its timer support.
dur | The length of the pong timeout in ms |
Definition at line 399 of file endpoint.hpp.
|
inline |
Sets the user agent string that this endpoint will use.
Sets the identifier that this endpoint will use when creating new connections. Changing this value will only affect future connections. For client endpoints this will be sent as the "User-Agent" header in outgoing requests. For server endpoints this will be sent in the "Server" response header.
Setting this value to the empty string will suppress the use of the Server and User-Agent headers. This is typically done to hide implementation details for security purposes.
For best results set this before accepting or opening connections.
The default value for this version is stored in websocketpp::user_agent
This can be overridden on an individual connection basis by setting a custom "Server" header during the validate handler or "User-Agent" header on a connection before calling connect().
ua | The string to set the user agent to. |
Definition at line 196 of file endpoint.hpp.