|
WebSocket++ 0.8.4
C++ websocket client/server library
|
Asio based connection transport component. More...
#include <connection.hpp>
Public Types | |
| typedef connection< config > | type |
| Type of this connection transport component. | |
| typedef lib::shared_ptr< type > | ptr |
| Type of a shared pointer to this connection transport component. | |
| typedef config::socket_type::socket_con_type | socket_con_type |
| Type of the socket connection component. | |
| typedef socket_con_type::ptr | socket_con_ptr |
| Type of a shared pointer to the socket connection component. | |
| typedef config::alog_type | alog_type |
| Type of this transport's access logging policy. | |
| typedef config::elog_type | elog_type |
| Type of this transport's error logging policy. | |
| typedef config::request_type | request_type |
| typedef request_type::ptr | request_ptr |
| typedef config::response_type | response_type |
| typedef response_type::ptr | response_ptr |
| typedef lib::asio::io_context * | io_context_ptr |
| Type of a pointer to the Asio io_context being used. | |
| typedef io_context_ptr | io_service_ptr |
| Type of a pointer to the Asio io_context being used (deprecated). | |
| typedef lib::shared_ptr< lib::asio::io_context::strand > | strand_ptr |
| Type of a pointer to the Asio io_context::strand being used. | |
| typedef lib::shared_ptr< lib::asio::steady_timer > | timer_ptr |
| Type of a pointer to the Asio timer class. | |
Public Member Functions | |
| connection (bool is_server, const lib::shared_ptr< alog_type > &alog, const lib::shared_ptr< elog_type > &elog) | |
| ptr | get_shared () |
| Get a shared pointer to this component. | |
| bool | is_secure () const |
| void | set_uri (uri_ptr u) |
| Set uri hook. | |
| void | set_tcp_pre_init_handler (tcp_init_handler h) |
| Sets the tcp pre init handler. | |
| void | set_tcp_init_handler (tcp_init_handler h) |
| Sets the tcp pre init handler (deprecated). | |
| void | set_tcp_post_init_handler (tcp_init_handler h) |
| Sets the tcp post init handler. | |
| void | set_proxy (std::string const &uri, lib::error_code &ec) |
| Set the proxy to connect through (exception free). | |
| void | set_proxy (std::string const &uri) |
| Set the proxy to connect through (exception). | |
| 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). | |
| void | set_proxy_basic_auth (std::string const &username, std::string const &password) |
| Set the basic auth credentials to use (exception). | |
| void | set_proxy_timeout (long duration, lib::error_code &ec) |
| Set the proxy timeout duration (exception free). | |
| void | set_proxy_timeout (long duration) |
| Set the proxy timeout duration (exception). | |
| std::string const & | get_proxy () const |
| std::string | get_remote_endpoint () const |
| Get the remote endpoint address. | |
| connection_hdl | get_handle () const |
| Get the connection handle. | |
| timer_ptr | set_timer (long duration, timer_handler callback) |
| Call back a function after a period of time. | |
| void | handle_timer (timer_ptr, timer_handler callback, lib::asio::error_code const &ec) |
| Timer callback. | |
| strand_ptr | get_strand () |
| Get a pointer to this connection's strand. | |
| lib::asio::error_code | get_transport_ec () const |
| Get the internal transport error code for a closed/failed connection. | |
Protected Member Functions | |
| void | init (init_handler callback) |
| Initialize transport for reading. | |
| lib::error_code | proxy_init (std::string const &authority) |
| initialize the proxy buffers and http parsers | |
| lib::error_code | init_asio (io_context_ptr io_context) |
| Finish constructing the transport. | |
| void | handle_pre_init (init_handler callback, lib::error_code const &ec) |
| void | post_init (init_handler callback) |
| void | handle_post_init_timeout (timer_ptr, init_handler callback, lib::error_code const &ec) |
| Post init timeout callback. | |
| void | handle_post_init (timer_ptr post_timer, init_handler callback, lib::error_code const &ec) |
| Post init timeout callback. | |
| void | proxy_write (init_handler callback) |
| void | handle_proxy_timeout (init_handler callback, lib::error_code const &ec) |
| void | handle_proxy_write (init_handler callback, lib::asio::error_code const &ec) |
| void | proxy_read (init_handler callback) |
| void | handle_proxy_read (init_handler callback, lib::asio::error_code const &ec, size_t) |
| Proxy read callback. | |
| 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. | |
| void | handle_async_read (read_handler handler, lib::asio::error_code const &ec, size_t bytes_transferred) |
| void | async_write (const char *buf, size_t len, write_handler handler) |
| Initiate a potentially asyncronous write of the given buffer. | |
| void | async_write (std::vector< buffer > const &bufs, write_handler handler) |
| Initiate a potentially asyncronous write of the given buffers. | |
| void | handle_async_write (write_handler handler, lib::asio::error_code const &ec, size_t) |
| Async write callback. | |
| void | set_handle (connection_hdl hdl) |
| Set Connection Handle. | |
| lib::error_code | interrupt (interrupt_handler handler) |
| Trigger the on_interrupt handler. | |
| lib::error_code | dispatch (dispatch_handler handler) |
| void | async_shutdown (shutdown_handler callback) |
| close and clean up the underlying socket | |
| void | handle_async_shutdown_timeout (timer_ptr, init_handler callback, lib::error_code const &ec) |
| Async shutdown timeout handler. | |
| void | handle_async_shutdown (timer_ptr shutdown_timer, shutdown_handler callback, lib::asio::error_code const &ec) |
| void | cancel_socket_checked () |
| Cancel the underlying socket and log any errors. | |
Friends | |
| class | endpoint< config > |
Asio based connection transport component.
transport::asio::connection implements a connection transport component using Asio that works with the transport::asio::endpoint endpoint transport component.
Definition at line 67 of file connection.hpp.
| typedef config::alog_type websocketpp::transport::asio::connection< config >::alog_type |
Type of this transport's access logging policy.
Definition at line 79 of file connection.hpp.
| typedef config::elog_type websocketpp::transport::asio::connection< config >::elog_type |
Type of this transport's error logging policy.
Definition at line 81 of file connection.hpp.
| typedef lib::asio::io_context* websocketpp::transport::asio::connection< config >::io_context_ptr |
Type of a pointer to the Asio io_context being used.
Definition at line 89 of file connection.hpp.
| typedef io_context_ptr websocketpp::transport::asio::connection< config >::io_service_ptr |
Type of a pointer to the Asio io_context being used (deprecated).
Definition at line 94 of file connection.hpp.
| typedef lib::shared_ptr<type> websocketpp::transport::asio::connection< config >::ptr |
Type of a shared pointer to this connection transport component.
Definition at line 72 of file connection.hpp.
| typedef request_type::ptr websocketpp::transport::asio::connection< config >::request_ptr |
Definition at line 84 of file connection.hpp.
| typedef config::request_type websocketpp::transport::asio::connection< config >::request_type |
Definition at line 83 of file connection.hpp.
| typedef response_type::ptr websocketpp::transport::asio::connection< config >::response_ptr |
Definition at line 86 of file connection.hpp.
| typedef config::response_type websocketpp::transport::asio::connection< config >::response_type |
Definition at line 85 of file connection.hpp.
| typedef socket_con_type::ptr websocketpp::transport::asio::connection< config >::socket_con_ptr |
Type of a shared pointer to the socket connection component.
Definition at line 77 of file connection.hpp.
| typedef config::socket_type::socket_con_type websocketpp::transport::asio::connection< config >::socket_con_type |
Type of the socket connection component.
Definition at line 75 of file connection.hpp.
| typedef lib::shared_ptr<lib::asio::io_context::strand> websocketpp::transport::asio::connection< config >::strand_ptr |
Type of a pointer to the Asio io_context::strand being used.
Definition at line 96 of file connection.hpp.
| typedef lib::shared_ptr<lib::asio::steady_timer> websocketpp::transport::asio::connection< config >::timer_ptr |
Type of a pointer to the Asio timer class.
Definition at line 98 of file connection.hpp.
| typedef connection<config> websocketpp::transport::asio::connection< config >::type |
Type of this connection transport component.
Definition at line 70 of file connection.hpp.
|
inlineexplicit |
Definition at line 106 of file connection.hpp.
|
inlineprotected |
read at least num_bytes bytes into buf and then call handler.
Definition at line 840 of file connection.hpp.
|
inlineprotected |
close and clean up the underlying socket
Definition at line 1059 of file connection.hpp.
|
inlineprotected |
Initiate a potentially asyncronous write of the given buffer.
Definition at line 926 of file connection.hpp.
|
inlineprotected |
Initiate a potentially asyncronous write of the given buffers.
Definition at line 959 of file connection.hpp.
|
inlineprotected |
Cancel the underlying socket and log any errors.
Definition at line 1157 of file connection.hpp.
|
inlineprotected |
Definition at line 1045 of file connection.hpp.
|
inline |
Get the connection handle.
Definition at line 306 of file connection.hpp.
|
inline |
Definition at line 278 of file connection.hpp.
|
inline |
Get the remote endpoint address.
The iostream transport has no information about the ultimate remote endpoint. It will return the string "iostream transport". To indicate this.
TODO: allow user settable remote endpoint addresses if this seems useful
Definition at line 292 of file connection.hpp.
|
inline |
Get a shared pointer to this component.
Definition at line 115 of file connection.hpp.
|
inline |
Get a pointer to this connection's strand.
Definition at line 377 of file connection.hpp.
|
inline |
Get the internal transport error code for a closed/failed connection.
Retrieves a machine readable detailed error code indicating the reason that the connection was closed or failed. Valid only after the close or fail handler is called.
Primarily used if you are using mismatched asio / system_error implementations such as boost::asio with std::system_error. In these cases the transport error type is different than the library error type and some WebSocket++ functions that return transport errors via the library error code type will be coerced into a catch all pass_through or tls_error error. This method will return the original machine readable transport error in the native type.
Definition at line 400 of file connection.hpp.
|
inlineprotected |
Definition at line 891 of file connection.hpp.
|
inlineprotected |
Definition at line 1117 of file connection.hpp.
|
inlineprotected |
Async shutdown timeout handler.
| shutdown_timer | A pointer to the timer to keep it in scope |
| callback | The function to call back |
| ec | The status code |
Definition at line 1093 of file connection.hpp.
|
inlineprotected |
Async write callback.
| ec | The status code |
| bytes_transferred | The number of bytes read |
Definition at line 1003 of file connection.hpp.
|
inlineprotected |
Post init timeout callback.
The timer pointer is included to ensure the timer isn't destroyed until after it has expired.
| post_timer | Pointer to the timer in question |
| callback | The function to call back |
| ec | The status code |
Definition at line 583 of file connection.hpp.
|
inlineprotected |
Post init timeout callback.
The timer pointer is included to ensure the timer isn't destroyed until after it has expired.
| post_timer | Pointer to the timer in question |
| callback | The function to call back |
| ec | The status code |
Definition at line 547 of file connection.hpp.
|
inlineprotected |
Definition at line 485 of file connection.hpp.
|
inlineprotected |
Proxy read callback.
| init_handler | The function to call back |
| ec | The status code |
| bytes_transferred | The number of bytes read |
Definition at line 752 of file connection.hpp.
|
inlineprotected |
Definition at line 662 of file connection.hpp.
|
inlineprotected |
Definition at line 679 of file connection.hpp.
|
inline |
Timer callback.
The timer pointer is included to ensure the timer isn't destroyed until after it has expired.
TODO: candidate for protected status
| post_timer | Pointer to the timer in question |
| callback | The function to call back |
| ec | The status code |
Definition at line 361 of file connection.hpp.
|
inlineprotected |
Initialize transport for reading.
init_asio is called once immediately after construction to initialize Asio components to the io_context
The transport initialization sequence consists of the following steps:
Definition at line 422 of file connection.hpp.
|
inlineprotected |
Finish constructing the transport.
init_asio is called once immediately after construction to initialize Asio components to the io_context.
| io_context | A pointer to the io_context to register with this connection |
Definition at line 472 of file connection.hpp.
|
inlineprotected |
Trigger the on_interrupt handler.
This needs to be thread safe
Definition at line 1036 of file connection.hpp.
|
inline |
Definition at line 119 of file connection.hpp.
|
inlineprotected |
Definition at line 507 of file connection.hpp.
|
inlineprotected |
initialize the proxy buffers and http parsers
| authority | The address of the server we want the proxy to tunnel to in the format of a URI authority (host:port) |
Definition at line 448 of file connection.hpp.
|
inlineprotected |
Definition at line 709 of file connection.hpp.
|
inlineprotected |
Definition at line 608 of file connection.hpp.
|
inlineprotected |
Set Connection Handle.
See common/connection_hdl.hpp for information
| hdl | A connection_hdl that the transport will use to refer to itself |
Definition at line 1027 of file connection.hpp.
|
inline |
Set the proxy to connect through (exception).
Definition at line 204 of file connection.hpp.
|
inline |
Set the proxy to connect through (exception free).
The URI passed should be a complete URI including scheme. For example: http://proxy.example.com:8080/
The proxy must be set up as an explicit (CONNECT) proxy allowed to connect to the port you specify. Traffic to the proxy is not encrypted.
| uri | The full URI of the proxy to connect to. |
| ec | A status value |
Definition at line 194 of file connection.hpp.
|
inline |
Set the basic auth credentials to use (exception).
Definition at line 240 of file connection.hpp.
|
inline |
Set the basic auth credentials to use (exception free).
The URI passed should be a complete URI including scheme. For example: http://proxy.example.com:8080/
The proxy must be set up as an explicit proxy
| username | The username to send |
| password | The password to send |
| ec | A status value |
Definition at line 224 of file connection.hpp.
|
inline |
Set the proxy timeout duration (exception).
Definition at line 271 of file connection.hpp.
|
inline |
Set the proxy timeout duration (exception free).
Duration is in milliseconds. Default value is based on the transport config
| duration | The number of milliseconds to wait before aborting the proxy connection. |
| ec | A status value |
Definition at line 259 of file connection.hpp.
|
inline |
Sets the tcp pre init handler (deprecated).
The tcp pre init handler is called after the raw tcp connection has been established but before any additional wrappers (proxy connects, TLS handshakes, etc) have been performed.
| h | The handler to call on tcp pre init. |
Definition at line 163 of file connection.hpp.
|
inline |
Sets the tcp post init handler.
The tcp post init handler is called after the tcp connection has been established and all additional wrappers (proxy connects, TLS handshakes, etc have been performed. This is fired before any bytes are read or any WebSocket specific handshake logic has been performed.
| h | The handler to call on tcp post init. |
Definition at line 178 of file connection.hpp.
|
inline |
Sets the tcp pre init handler.
The tcp pre init handler is called after the raw tcp connection has been established but before any additional wrappers (proxy connects, TLS handshakes, etc) have been performed.
| h | The handler to call on tcp pre init. |
Definition at line 149 of file connection.hpp.
|
inline |
Call back a function after a period of time.
Sets a timer that calls back a function after the specified period of milliseconds. Returns a handle that can be used to cancel the timer. A cancelled timer will return the error code error::operation_aborted A timer that expired will return no error.
| duration | Length of time to wait in milliseconds |
| callback | The function to call back when the timer has expired |
Definition at line 324 of file connection.hpp.
|
inline |
Set uri hook.
Called by the endpoint as a connection is being established to provide the uri being connected to to the transport layer.
This transport policy doesn't use the uri except to forward it to the socket layer.
| u | The uri to set |
Definition at line 135 of file connection.hpp.
|
friend |
Definition at line 98 of file connection.hpp.