NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.3: NDN, CCN, CCNx, content centric networks
API Documentation
websocketpp::transport::asio::connection< config > Class Template Reference

Asio based connection transport component. More...

#include <connection.hpp>

Inheritance diagram for websocketpp::transport::asio::connection< config >:
Collaboration diagram for websocketpp::transport::asio::connection< config >:

Public Types

typedef connection< configtype
 Type of this connection transport component. More...
 
typedef lib::shared_ptr< typeptr
 Type of a shared pointer to this connection transport component. More...
 
typedef config::socket_type::socket_con_type socket_con_type
 Type of the socket connection component. More...
 
typedef socket_con_type::ptr socket_con_ptr
 Type of a shared pointer to the socket connection component. More...
 
typedef config::alog_type alog_type
 Type of this transport's access logging policy. More...
 
typedef config::elog_type elog_type
 Type of this transport's error logging policy. More...
 
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. More...
 
typedef lib::shared_ptr< lib::asio::io_service::strand > strand_ptr
 Type of a pointer to the Asio io_service::strand being used. More...
 
typedef lib::shared_ptr< lib::asio::steady_timertimer_ptr
 Type of a pointer to the Asio timer class. More...
 
- Public Types inherited from websocketpp::transport::asio::tls_socket::connection
typedef connection type
 Type of this connection socket component. More...
 
typedef lib::shared_ptr< typeptr
 Type of a shared pointer to this connection socket component. More...
 
typedef lib::asio::ssl::stream< lib::asio::ip::tcp::socket > socket_type
 Type of the ASIO socket being used. More...
 
typedef lib::shared_ptr< socket_typesocket_ptr
 Type of a shared pointer to the ASIO socket being used. More...
 
typedef lib::asio::io_service * io_service_ptr
 Type of a pointer to the ASIO io_service being used. More...
 
typedef lib::shared_ptr< lib::asio::io_service::strand > strand_ptr
 Type of a pointer to the ASIO io_service strand being used. More...
 
typedef lib::shared_ptr< lib::asio::ssl::context > context_ptr
 Type of a shared pointer to the ASIO TLS context being used. More...
 

Public Member Functions

 connection (bool is_server, alog_type &alog, elog_type &elog)
 
ptr get_shared ()
 Get a shared pointer to this component. More...
 
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) More...
 
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) More...
 
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) More...
 
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. More...
 
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. More...
 
lib::asio::error_code get_transport_ec () const
 Get the internal transport error code for a closed/failed connection. More...
 
- Public Member Functions inherited from websocketpp::transport::asio::tls_socket::connection
 connection ()
 
ptr get_shared ()
 Get a shared pointer to this component. More...
 
bool is_secure () const
 Check whether or not this connection is secure. More...
 
socket_type::lowest_layer_type & get_raw_socket ()
 Retrieve a pointer to the underlying socket. More...
 
socket_type::next_layer_type & get_next_layer ()
 Retrieve a pointer to the layer below the ssl stream. More...
 
socket_typeget_socket ()
 Retrieve a pointer to the wrapped socket. More...
 
void set_socket_init_handler (socket_init_handler h)
 Set the socket initialization handler. More...
 
void set_tls_init_handler (tls_init_handler h)
 Set TLS init handler. More...
 
std::string get_remote_endpoint (lib::error_code &ec) const
 Get the remote endpoint address. 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. More...
 
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. More...
 
void async_write (std::vector< buffer > const &bufs, write_handler handler)
 Initiate a potentially asyncronous write of the given buffers. More...
 
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 More...
 
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. More...
 
- Protected Member Functions inherited from websocketpp::transport::asio::tls_socket::connection
lib::error_code init_asio (io_service_ptr service, strand_ptr strand, bool is_server)
 Perform one time initializations. More...
 
void set_uri (uri_ptr u)
 Set hostname hook. More...
 
void pre_init (init_handler callback)
 Pre-initialize security policy. More...
 
void post_init (init_handler callback)
 Post-initialize security policy. More...
 
void set_handle (connection_hdl hdl)
 Sets the connection handle. More...
 
void handle_init (init_handler callback, lib::asio::error_code const &ec)
 
lib::error_code get_ec () const
 
lib::asio::error_code cancel_socket ()
 Cancel all async operations on this socket. More...
 
void async_shutdown (socket::shutdown_handler callback)
 
template<typename ErrorCodeType >
lib::error_code translate_ec (ErrorCodeType ec)
 Translate any security policy specific information about an error code. More...
 
lib::error_code translate_ec (lib::error_code ec)
 Overload of translate_ec to catch cases where lib::error_code is the same type as lib::asio::error_code. More...
 

Friends

class endpoint< config >
 

Detailed Description

template<typename config>
class websocketpp::transport::asio::connection< 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.

Member Typedef Documentation

template<typename config >
typedef connection<config> websocketpp::transport::asio::connection< config >::type

Type of this connection transport component.

Definition at line 70 of file connection.hpp.

template<typename config >
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.

Type of the socket connection component.

Definition at line 75 of file connection.hpp.

Type of a shared pointer to the socket connection component.

Definition at line 77 of file connection.hpp.

Type of this transport's access logging policy.

Definition at line 79 of file connection.hpp.

Type of this transport's error logging policy.

Definition at line 81 of file connection.hpp.

Definition at line 83 of file connection.hpp.

Definition at line 84 of file connection.hpp.

Definition at line 85 of file connection.hpp.

Definition at line 86 of file connection.hpp.

template<typename config >
typedef lib::asio::io_service* websocketpp::transport::asio::connection< config >::io_service_ptr

Type of a pointer to the Asio io_service being used.

Definition at line 89 of file connection.hpp.

template<typename config >
typedef lib::shared_ptr<lib::asio::io_service::strand> websocketpp::transport::asio::connection< config >::strand_ptr

Type of a pointer to the Asio io_service::strand being used.

Definition at line 91 of file connection.hpp.

template<typename config >
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 93 of file connection.hpp.

Constructor & Destructor Documentation

template<typename config >
websocketpp::transport::asio::connection< config >::connection ( bool  is_server,
alog_type alog,
elog_type elog 
)
inlineexplicit

Member Function Documentation

template<typename config >
bool websocketpp::transport::asio::connection< config >::is_secure ( ) const
inline
template<typename config >
void websocketpp::transport::asio::connection< config >::set_uri ( uri_ptr  u)
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.

Since
0.6.0
Parameters
uThe uri to set

Definition at line 130 of file connection.hpp.

References websocketpp::transport::asio::tls_socket::connection::set_uri().

template<typename config >
void websocketpp::transport::asio::connection< config >::set_tcp_pre_init_handler ( tcp_init_handler  h)
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.

Since
0.3.0
Parameters
hThe handler to call on tcp pre init.

Definition at line 144 of file connection.hpp.

Referenced by websocketpp::transport::asio::connection< config >::set_tcp_init_handler().

template<typename config >
void websocketpp::transport::asio::connection< config >::set_tcp_init_handler ( tcp_init_handler  h)
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.

Deprecated:
Use set_tcp_pre_init_handler instead
Parameters
hThe handler to call on tcp pre init.

Definition at line 158 of file connection.hpp.

References websocketpp::transport::asio::connection< config >::set_tcp_pre_init_handler().

template<typename config >
void websocketpp::transport::asio::connection< config >::set_tcp_post_init_handler ( tcp_init_handler  h)
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.

Since
0.3.0
Parameters
hThe handler to call on tcp post init.

Definition at line 173 of file connection.hpp.

template<typename config >
void websocketpp::transport::asio::connection< config >::set_proxy ( std::string const &  uri,
lib::error_code &  ec 
)
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.

Parameters
uriThe full URI of the proxy to connect to.
ecA status value

Definition at line 189 of file connection.hpp.

Referenced by websocketpp::transport::asio::connection< config >::set_proxy().

template<typename config >
void websocketpp::transport::asio::connection< config >::set_proxy ( std::string const &  uri)
inline

Set the proxy to connect through (exception)

Definition at line 198 of file connection.hpp.

References websocketpp::transport::asio::connection< config >::set_proxy().

template<typename config >
void websocketpp::transport::asio::connection< config >::set_proxy_basic_auth ( std::string const &  username,
std::string const &  password,
lib::error_code &  ec 
)
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

Parameters
usernameThe username to send
passwordThe password to send
ecA status value

Definition at line 217 of file connection.hpp.

References websocketpp::base64_encode(), websocketpp::error::invalid_state, and websocketpp::transport::error::make_error_code().

Referenced by websocketpp::transport::asio::connection< config >::set_proxy_basic_auth().

template<typename config >
void websocketpp::transport::asio::connection< config >::set_proxy_basic_auth ( std::string const &  username,
std::string const &  password 
)
inline

Set the basic auth credentials to use (exception)

Definition at line 232 of file connection.hpp.

References websocketpp::transport::asio::connection< config >::set_proxy_basic_auth().

template<typename config >
void websocketpp::transport::asio::connection< config >::set_proxy_timeout ( long  duration,
lib::error_code &  ec 
)
inline

Set the proxy timeout duration (exception free)

Duration is in milliseconds. Default value is based on the transport config

Parameters
durationThe number of milliseconds to wait before aborting the proxy connection.
ecA status value

Definition at line 250 of file connection.hpp.

References websocketpp::error::invalid_state, and websocketpp::transport::error::make_error_code().

Referenced by websocketpp::transport::asio::connection< config >::set_proxy_timeout().

template<typename config >
void websocketpp::transport::asio::connection< config >::set_proxy_timeout ( long  duration)
inline

Set the proxy timeout duration (exception)

Definition at line 261 of file connection.hpp.

References websocketpp::transport::asio::connection< config >::set_proxy_timeout().

template<typename config >
std::string const& websocketpp::transport::asio::connection< config >::get_proxy ( ) const
inline

Definition at line 267 of file connection.hpp.

template<typename config >
std::string websocketpp::transport::asio::connection< config >::get_remote_endpoint ( ) const
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

Returns
A string identifying the address of the remote endpoint

Definition at line 281 of file connection.hpp.

References websocketpp::transport::asio::tls_socket::connection::get_remote_endpoint(), websocketpp::log::elevel::info, and websocketpp::log::stub::write().

template<typename config >
connection_hdl websocketpp::transport::asio::connection< config >::get_handle ( ) const
inline

Get the connection handle.

Definition at line 295 of file connection.hpp.

template<typename config >
timer_ptr websocketpp::transport::asio::connection< config >::set_timer ( long  duration,
timer_handler  callback 
)
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.

Parameters
durationLength of time to wait in milliseconds
callbackThe function to call back when the timer has expired
Returns
A handle that can be used to cancel the timer if it is no longer needed.

Definition at line 313 of file connection.hpp.

References config::enable_multithreading, websocketpp::transport::asio::connection< config >::get_shared(), websocketpp::transport::asio::connection< config >::handle_timer(), and websocketpp::lib::asio::milliseconds().

Referenced by websocketpp::transport::asio::connection< config >::async_shutdown(), websocketpp::transport::asio::connection< config >::post_init(), and websocketpp::transport::asio::connection< config >::proxy_write().

template<typename config >
void websocketpp::transport::asio::connection< config >::handle_timer ( timer_ptr  ,
timer_handler  callback,
lib::asio::error_code const &  ec 
)
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

Parameters
post_timerPointer to the timer in question
callbackThe function to call back
ecThe status code

Definition at line 349 of file connection.hpp.

References websocketpp::log::elevel::info, websocketpp::transport::error::make_error_code(), websocketpp::transport::error::operation_aborted, and websocketpp::transport::asio::error::pass_through.

Referenced by websocketpp::transport::asio::connection< config >::set_timer().

template<typename config >
strand_ptr websocketpp::transport::asio::connection< config >::get_strand ( )
inline

Get a pointer to this connection's strand.

Definition at line 365 of file connection.hpp.

template<typename config >
lib::asio::error_code websocketpp::transport::asio::connection< config >::get_transport_ec ( ) const
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.

Since
0.7.0
Returns
Error code indicating the reason the connection was closed or failed

Definition at line 388 of file connection.hpp.

template<typename config >
void websocketpp::transport::asio::connection< config >::init ( init_handler  callback)
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:

  • Pre-init: the underlying socket is initialized to the point where bytes may be written. No bytes are actually written in this stage
  • Proxy negotiation: if a proxy is set, a request is made to it to start a tunnel to the final destination. This stage ends when the proxy is ready to forward the next byte to the remote endpoint.
  • Post-init: Perform any i/o with the remote endpoint, such as setting up tunnels for encryption. This stage ends when the connection is ready to read or write the WebSocket handshakes. At this point the original callback function is called.

Definition at line 410 of file connection.hpp.

References websocketpp::log::alevel::devel, websocketpp::transport::asio::connection< config >::get_shared(), websocketpp::transport::asio::connection< config >::handle_pre_init(), websocketpp::transport::asio::tls_socket::connection::pre_init(), websocketpp::log::stub::static_test(), and websocketpp::log::stub::write().

template<typename config >
lib::error_code websocketpp::transport::asio::connection< config >::proxy_init ( std::string const &  authority)
inlineprotected

initialize the proxy buffers and http parsers

Parameters
authorityThe address of the server we want the proxy to tunnel to in the format of a URI authority (host:port)
Returns
Status code indicating what errors occurred, if any

Definition at line 436 of file connection.hpp.

References websocketpp::error::invalid_state, and websocketpp::error::make_error_code().

template<typename config >
lib::error_code websocketpp::transport::asio::connection< config >::init_asio ( io_service_ptr  io_service)
inlineprotected

Finish constructing the transport.

init_asio is called once immediately after construction to initialize Asio components to the io_service.

Parameters
io_serviceA pointer to the io_service to register with this connection
Returns
Status code for the success or failure of the initialization

Definition at line 460 of file connection.hpp.

References config::enable_multithreading, and websocketpp::transport::asio::tls_socket::connection::init_asio().

template<typename config >
void websocketpp::transport::asio::connection< config >::handle_post_init_timeout ( timer_ptr  ,
init_handler  callback,
lib::error_code const &  ec 
)
inlineprotected

Post init timeout callback.

The timer pointer is included to ensure the timer isn't destroyed until after it has expired.

Parameters
post_timerPointer to the timer in question
callbackThe function to call back
ecThe status code

Definition at line 536 of file connection.hpp.

References websocketpp::transport::asio::connection< config >::cancel_socket_checked(), websocketpp::log::elevel::devel, websocketpp::log::alevel::devel, websocketpp::transport::asio::tls_socket::connection::get_ec(), websocketpp::transport::error::make_error_code(), websocketpp::transport::error::operation_aborted, websocketpp::transport::error::timeout, and websocketpp::log::stub::write().

Referenced by websocketpp::transport::asio::connection< config >::post_init().

template<typename config >
void websocketpp::transport::asio::connection< config >::handle_post_init ( timer_ptr  post_timer,
init_handler  callback,
lib::error_code const &  ec 
)
inlineprotected

Post init timeout callback.

The timer pointer is included to ensure the timer isn't destroyed until after it has expired.

Parameters
post_timerPointer to the timer in question
callbackThe function to call back
ecThe status code

Definition at line 572 of file connection.hpp.

References websocketpp::log::alevel::devel, websocketpp::lib::asio::is_neg(), websocketpp::transport::error::operation_aborted, websocketpp::log::stub::static_test(), and websocketpp::log::stub::write().

Referenced by websocketpp::transport::asio::connection< config >::post_init().

template<typename config >
void websocketpp::transport::asio::connection< config >::handle_async_write ( write_handler  handler,
lib::asio::error_code const &  ec,
size_t   
)
inlineprotected
template<typename config >
void websocketpp::transport::asio::connection< config >::set_handle ( connection_hdl  hdl)
inlineprotected

Set Connection Handle.

See common/connection_hdl.hpp for information

Parameters
hdlA connection_hdl that the transport will use to refer to itself

Definition at line 1004 of file connection.hpp.

References websocketpp::transport::asio::tls_socket::connection::set_handle().

template<typename config >
lib::error_code websocketpp::transport::asio::connection< config >::interrupt ( interrupt_handler  handler)
inlineprotected

Trigger the on_interrupt handler.

This needs to be thread safe

Definition at line 1013 of file connection.hpp.

References config::enable_multithreading.

template<typename config >
lib::error_code websocketpp::transport::asio::connection< config >::dispatch ( dispatch_handler  handler)
inlineprotected

Definition at line 1022 of file connection.hpp.

References config::enable_multithreading.

template<typename config >
void websocketpp::transport::asio::connection< config >::handle_async_shutdown_timeout ( timer_ptr  ,
init_handler  callback,
lib::error_code const &  ec 
)
inlineprotected

Friends And Related Function Documentation

template<typename config >
friend class endpoint< config >
friend

Definition at line 98 of file connection.hpp.


The documentation for this class was generated from the following file: