Wire Sysio Wire Sysion 1.0.0
|
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_service * | io_service_ptr |
Type of a pointer to the Asio io_service being used. | |
typedef lib::shared_ptr< lib::asio::io_service::strand > | strand_ptr |
Type of a pointer to the Asio io_service::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, alog_type &alog, 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_service_ptr io_service) |
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 > |
template<typename T > | |
class | local_endpoint |
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.
config::alog_type websocketpp::transport::asio::connection< config >::alog_type |
Definition at line 79 of file connection.hpp.
config::elog_type websocketpp::transport::asio::connection< config >::elog_type |
Definition at line 81 of file connection.hpp.
lib::asio::io_service* websocketpp::transport::asio::connection< config >::io_service_ptr |
Definition at line 89 of file connection.hpp.
lib::shared_ptr<type> websocketpp::transport::asio::connection< config >::ptr |
Definition at line 72 of file connection.hpp.
request_type::ptr websocketpp::transport::asio::connection< config >::request_ptr |
Definition at line 84 of file connection.hpp.
config::request_type websocketpp::transport::asio::connection< config >::request_type |
Definition at line 83 of file connection.hpp.
response_type::ptr websocketpp::transport::asio::connection< config >::response_ptr |
Definition at line 86 of file connection.hpp.
config::response_type websocketpp::transport::asio::connection< config >::response_type |
Definition at line 85 of file connection.hpp.
socket_con_type::ptr websocketpp::transport::asio::connection< config >::socket_con_ptr |
Definition at line 77 of file connection.hpp.
config::socket_type::socket_con_type websocketpp::transport::asio::connection< config >::socket_con_type |
Definition at line 75 of file connection.hpp.
lib::shared_ptr<lib::asio::io_service::strand> websocketpp::transport::asio::connection< config >::strand_ptr |
Definition at line 91 of file connection.hpp.
lib::shared_ptr<lib::asio::steady_timer> websocketpp::transport::asio::connection< config >::timer_ptr |
Definition at line 93 of file connection.hpp.
connection<config> websocketpp::transport::asio::connection< config >::type |
Definition at line 70 of file connection.hpp.
|
inlineexplicit |
Definition at line 102 of file connection.hpp.
|
inlineprotected |
Definition at line 820 of file connection.hpp.
|
inlineprotected |
Definition at line 1036 of file connection.hpp.
|
inlineprotected |
Definition at line 906 of file connection.hpp.
|
inlineprotected |
Definition at line 939 of file connection.hpp.
|
inlineprotected |
Definition at line 1141 of file connection.hpp.
|
inlineprotected |
Definition at line 1022 of file connection.hpp.
|
inline |
Definition at line 296 of file connection.hpp.
|
inline |
Definition at line 268 of file connection.hpp.
|
inline |
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 282 of file connection.hpp.
|
inline |
Definition at line 111 of file connection.hpp.
|
inline |
Definition at line 366 of file connection.hpp.
|
inline |
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 389 of file connection.hpp.
|
inlineprotected |
Definition at line 871 of file connection.hpp.
|
inlineprotected |
Definition at line 1094 of file connection.hpp.
|
inlineprotected |
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 1070 of file connection.hpp.
|
inlineprotected |
ec | The status code |
bytes_transferred | The number of bytes read |
Definition at line 980 of file connection.hpp.
|
inlineprotected |
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 572 of file connection.hpp.
|
inlineprotected |
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 536 of file connection.hpp.
|
inlineprotected |
Definition at line 474 of file connection.hpp.
|
inlineprotected |
init_handler | The function to call back |
ec | The status code |
bytes_transferred | The number of bytes read |
Definition at line 742 of file connection.hpp.
|
inlineprotected |
Definition at line 651 of file connection.hpp.
|
inlineprotected |
Definition at line 668 of file connection.hpp.
|
inline |
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 350 of file connection.hpp.
|
inlineprotected |
init_asio is called once immediately after construction to initialize Asio components to the io_service
The transport initialization sequence consists of the following steps:
Definition at line 411 of file connection.hpp.
|
inlineprotected |
init_asio is called once immediately after construction to initialize Asio components to the io_service.
io_service | A pointer to the io_service to register with this connection |
Definition at line 461 of file connection.hpp.
|
inlineprotected |
This needs to be thread safe
Definition at line 1013 of file connection.hpp.
|
inline |
Definition at line 115 of file connection.hpp.
|
inlineprotected |
Definition at line 496 of file connection.hpp.
|
inlineprotected |
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 437 of file connection.hpp.
|
inlineprotected |
Definition at line 698 of file connection.hpp.
|
inlineprotected |
Definition at line 597 of file connection.hpp.
|
inlineprotected |
See common/connection_hdl.hpp for information
hdl | A connection_hdl that the transport will use to refer to itself |
Definition at line 1004 of file connection.hpp.
|
inline |
Definition at line 199 of file connection.hpp.
|
inline |
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 190 of file connection.hpp.
|
inline |
Definition at line 233 of file connection.hpp.
|
inline |
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 218 of file connection.hpp.
|
inline |
Definition at line 262 of file connection.hpp.
|
inline |
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 251 of file connection.hpp.
|
inline |
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 159 of file connection.hpp.
|
inline |
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 174 of file connection.hpp.
|
inline |
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 145 of file connection.hpp.
|
inline |
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 314 of file connection.hpp.
|
inline |
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 131 of file connection.hpp.
Definition at line 93 of file connection.hpp.
Definition at line 99 of file connection.hpp.