WebSocket++
0.8.3-dev
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_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, 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. More... | |
void | set_tcp_pre_init_handler (tcp_init_handler h) |
Sets the tcp pre init handler. More... | |
void | set_tcp_init_handler (tcp_init_handler h) |
Sets the tcp pre init handler (deprecated) More... | |
void | set_tcp_post_init_handler (tcp_init_handler h) |
Sets the tcp post init handler. More... | |
void | set_proxy (std::string const &uri, lib::error_code &ec) |
Set the proxy to connect through (exception free) More... | |
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) More... | |
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) More... | |
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. More... | |
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. More... | |
void | handle_timer (timer_ptr, timer_handler callback, lib::asio::error_code const &ec) |
Timer callback. More... | |
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. More... | |
Protected Member Functions | |
void | init (init_handler callback) |
Initialize transport for reading. More... | |
lib::error_code | proxy_init (std::string const &authority) |
initialize the proxy buffers and http parsers More... | |
lib::error_code | init_asio (io_service_ptr io_service) |
Finish constructing the transport. More... | |
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. More... | |
void | handle_post_init (timer_ptr post_timer, init_handler callback, lib::error_code const &ec) |
Post init timeout callback. More... | |
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. More... | |
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. More... | |
void | set_handle (connection_hdl hdl) |
Set Connection Handle. More... | |
lib::error_code | interrupt (interrupt_handler handler) |
Trigger the on_interrupt handler. More... | |
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. More... | |
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.
|
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 281 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 389 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 1070 of file connection.hpp.
|
inlineprotected |
Async write callback.
ec | The status code |
bytes_transferred | The number of bytes read |
Definition at line 980 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 572 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 536 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 742 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 350 of file connection.hpp.
|
inlineprotected |
Initialize transport for reading.
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 |
Finish constructing the transport.
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 |
Trigger the on_interrupt handler.
This needs to be thread safe
Definition at line 1013 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 437 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 1004 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 189 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 217 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 250 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 158 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 173 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 144 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 313 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 130 of file connection.hpp.