NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
websocketpp::transport::asio::tls_socket::connection Class Reference

TLS enabled Asio connection socket component. More...

#include <tls.hpp>

Inheritance diagram for websocketpp::transport::asio::tls_socket::connection:
Collaboration diagram for websocketpp::transport::asio::tls_socket::connection:

Public Types

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 ()
 
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...
 

Static Public Member Functions

template<typename ErrorCodeType >
static lib::error_code translate_ec (ErrorCodeType ec)
 Translate any security policy specific information about an error code. More...
 
static 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...
 

Protected Member Functions

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)
 

Detailed Description

TLS enabled Asio connection socket component.

transport::asio::tls_socket::connection implements a secure connection socket component that uses Asio's ssl::stream to wrap an ip::tcp::socket.

Definition at line 63 of file tls.hpp.

Member Typedef Documentation

◆ type

Type of this connection socket component.

Definition at line 66 of file tls.hpp.

◆ ptr

Type of a shared pointer to this connection socket component.

Definition at line 68 of file tls.hpp.

◆ socket_type

typedef lib::asio::ssl::stream<lib::asio::ip::tcp::socket> websocketpp::transport::asio::tls_socket::connection::socket_type

Type of the ASIO socket being used.

Definition at line 71 of file tls.hpp.

◆ socket_ptr

Type of a shared pointer to the ASIO socket being used.

Definition at line 73 of file tls.hpp.

◆ io_service_ptr

Type of a pointer to the ASIO io_service being used.

Definition at line 75 of file tls.hpp.

◆ strand_ptr

typedef lib::shared_ptr<lib::asio::io_service::strand> websocketpp::transport::asio::tls_socket::connection::strand_ptr

Type of a pointer to the ASIO io_service strand being used.

Definition at line 77 of file tls.hpp.

◆ context_ptr

typedef lib::shared_ptr<lib::asio::ssl::context> websocketpp::transport::asio::tls_socket::connection::context_ptr

Type of a shared pointer to the ASIO TLS context being used.

Definition at line 79 of file tls.hpp.

Constructor & Destructor Documentation

◆ connection()

websocketpp::transport::asio::tls_socket::connection::connection ( )
inlineexplicit

Definition at line 81 of file tls.hpp.

Member Function Documentation

◆ get_shared()

ptr websocketpp::transport::asio::tls_socket::connection::get_shared ( )
inline

Get a shared pointer to this component.

Definition at line 87 of file tls.hpp.

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

◆ is_secure()

bool websocketpp::transport::asio::tls_socket::connection::is_secure ( ) const
inline

Check whether or not this connection is secure.

Returns
Whether or not this connection is secure

Definition at line 95 of file tls.hpp.

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

◆ get_raw_socket()

socket_type::lowest_layer_type& websocketpp::transport::asio::tls_socket::connection::get_raw_socket ( )
inline

Retrieve a pointer to the underlying socket.

This is used internally. It can also be used to set socket options, etc

Definition at line 103 of file tls.hpp.

Referenced by cancel_socket().

◆ get_next_layer()

socket_type::next_layer_type& websocketpp::transport::asio::tls_socket::connection::get_next_layer ( )
inline

Retrieve a pointer to the layer below the ssl stream.

This is used internally.

Definition at line 111 of file tls.hpp.

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

◆ get_socket()

socket_type& websocketpp::transport::asio::tls_socket::connection::get_socket ( )
inline

Retrieve a pointer to the wrapped socket.

This is used internally.

Definition at line 119 of file tls.hpp.

Referenced by websocketpp::transport::asio::connection< config >::async_read_at_least(), websocketpp::transport::asio::connection< config >::async_write(), init_asio(), and pre_init().

◆ set_socket_init_handler()

void websocketpp::transport::asio::tls_socket::connection::set_socket_init_handler ( socket_init_handler  h)
inline

Set the socket initialization handler.

The socket initialization handler is called after the socket object is created but before it is used. This gives the application a chance to set any ASIO socket options it needs.

Parameters
hThe new socket_init_handler

Definition at line 131 of file tls.hpp.

◆ set_tls_init_handler()

void websocketpp::transport::asio::tls_socket::connection::set_tls_init_handler ( tls_init_handler  h)
inline

Set TLS init handler.

The tls init handler is called when needed to request a TLS context for the library to use. A TLS init handler must be set and it must return a valid TLS context in order for this endpoint to be able to initialize TLS connections

Parameters
hThe new tls_init_handler

Definition at line 144 of file tls.hpp.

◆ get_remote_endpoint()

std::string websocketpp::transport::asio::tls_socket::connection::get_remote_endpoint ( lib::error_code &  ec) 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 158 of file tls.hpp.

References websocketpp::transport::asio::error::make_error_code(), and websocketpp::transport::asio::error::pass_through.

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

◆ init_asio()

lib::error_code websocketpp::transport::asio::tls_socket::connection::init_asio ( io_service_ptr  service,
strand_ptr  strand,
bool  is_server 
)
inlineprotected

Perform one time initializations.

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

Parameters
serviceA pointer to the endpoint's io_service
strandA pointer to the connection's strand
is_serverWhether or not the endpoint is a server or not.

Definition at line 185 of file tls.hpp.

References _WEBSOCKETPP_REF, get_socket(), websocketpp::transport::asio::socket::error::invalid_tls_context, websocketpp::transport::asio::socket::make_error_code(), and websocketpp::transport::asio::socket::error::missing_tls_init_handler.

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

◆ set_uri()

void websocketpp::transport::asio::tls_socket::connection::set_uri ( uri_ptr  u)
inlineprotected

Set hostname hook.

Called by the transport as a connection is being established to provide the hostname being connected to to the security/socket layer.

This socket policy uses the hostname to set the appropriate TLS SNI header.

Since
0.6.0
Parameters
uThe uri to set

Definition at line 222 of file tls.hpp.

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

◆ pre_init()

void websocketpp::transport::asio::tls_socket::connection::pre_init ( init_handler  callback)
inlineprotected

Pre-initialize security policy.

Called by the transport after a new connection is created to initialize the socket component of the connection. This method is not allowed to write any bytes to the wire. This initialization happens before any proxies or other intermediate wrappers are negotiated.

Parameters
callbackHandler to call back with completion information

Definition at line 235 of file tls.hpp.

References get_socket(), websocketpp::transport::asio::socket::make_error_code(), and websocketpp::transport::asio::socket::error::tls_failed_sni_hostname.

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

◆ post_init()

void websocketpp::transport::asio::tls_socket::connection::post_init ( init_handler  callback)
inlineprotected

Post-initialize security policy.

Called by the transport after all intermediate proxies have been negotiated. This gives the security policy the chance to talk with the real remote endpoint for a bit before the websocket handshake.

Parameters
callbackHandler to call back with completion information

Definition at line 263 of file tls.hpp.

References get_shared(), handle_init(), websocketpp::transport::asio::socket::make_error_code(), and websocketpp::transport::asio::socket::error::tls_handshake_timeout.

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

◆ set_handle()

void websocketpp::transport::asio::tls_socket::connection::set_handle ( connection_hdl  hdl)
inlineprotected

Sets the connection handle.

The connection handle is passed to any handlers to identify the connection

Parameters
hdlThe new handle

Definition at line 295 of file tls.hpp.

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

◆ handle_init()

void websocketpp::transport::asio::tls_socket::connection::handle_init ( init_handler  callback,
lib::asio::error_code const &  ec 
)
inlineprotected

◆ get_ec()

lib::error_code websocketpp::transport::asio::tls_socket::connection::get_ec ( ) const
inlineprotected

◆ cancel_socket()

lib::asio::error_code websocketpp::transport::asio::tls_socket::connection::cancel_socket ( )
inlineprotected

Cancel all async operations on this socket.

Attempts to cancel all async operations on this socket and reports any failures.

NOTE: Windows XP and earlier do not support socket cancellation.

Returns
The error that occurred, if any.

Definition at line 322 of file tls.hpp.

References get_raw_socket().

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

◆ async_shutdown()

void websocketpp::transport::asio::tls_socket::connection::async_shutdown ( socket::shutdown_handler  callback)
inlineprotected

◆ translate_ec() [1/2]

template<typename ErrorCodeType >
static lib::error_code websocketpp::transport::asio::tls_socket::connection::translate_ec ( ErrorCodeType  ec)
inlinestatic

Translate any security policy specific information about an error code.

Translate_ec takes an Asio error code and attempts to convert its value to an appropriate websocketpp error code. In the case that the Asio and Websocketpp error types are the same (such as using boost::asio and boost::system_error or using standalone asio and std::system_error the code will be passed through natively.

In the case of a mismatch (boost::asio with std::system_error) a translated code will be returned. Any error that is determined to be related to TLS but does not have a more specific websocketpp error code is returned under the catch all error tls_error. Non-TLS related errors are returned as the transport generic error pass_through

Since
0.3.0
Parameters
ecThe error code to translate_ec
Returns
The translated error code

Definition at line 358 of file tls.hpp.

References websocketpp::error::make_error_code(), websocketpp::transport::error::pass_through, and websocketpp::transport::error::tls_error.

Referenced by websocketpp::transport::asio::endpoint< config >::handle_accept(), websocketpp::transport::asio::connection< config >::handle_async_read(), websocketpp::transport::asio::connection< config >::handle_async_shutdown(), websocketpp::transport::asio::endpoint< config >::handle_connect(), websocketpp::transport::asio::endpoint< config >::handle_resolve(), websocketpp::transport::asio::endpoint< config >::handle_timer(), and websocketpp::transport::asio::endpoint< config >::init().

◆ translate_ec() [2/2]

static lib::error_code websocketpp::transport::asio::tls_socket::connection::translate_ec ( lib::error_code  ec)
inlinestatic

Overload of translate_ec to catch cases where lib::error_code is the same type as lib::asio::error_code.

Definition at line 373 of file tls.hpp.


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