Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

ACE_SSL_SOCK_Connector Class Reference

Defines a factory that creates new s actively. More...

#include <SSL_SOCK_Connector.h>

Collaboration diagram for ACE_SSL_SOCK_Connector:

Collaboration graph
[legend]
List of all members.

Public Types

typedef ACE_INET_Addr PEER_ADDR
typedef ACE_SSL_SOCK_Stream PEER_STREAM

Public Methods

 ACE_SSL_SOCK_Connector (ACE_Reactor *reactor = ACE_Reactor::instance ())
 Default constructor.

 ACE_SSL_SOCK_Connector (ACE_SSL_SOCK_Stream &new_stream, const ACE_Addr &remote_sap, const ACE_Time_Value *timeout = 0, const ACE_Addr &local_sap = ACE_Addr::sap_any, int reuse_addr = 0, int flags = 0, int perms = 0, int protocol_family = PF_INET, int protocol = 0, ACE_Reactor *reactor = ACE_Reactor::instance ())
 ACE_SSL_SOCK_Connector (ACE_SSL_SOCK_Stream &new_stream, const ACE_Addr &remote_sap, ACE_QoS_Params qos_params, const ACE_Time_Value *timeout = 0, const ACE_Addr &local_sap = ACE_Addr::sap_any, ACE_Protocol_Info *protocolinfo = 0, ACE_SOCK_GROUP g = 0, u_long flags = 0, int reuse_addr = 0, int perms = 0, int protocol_family = PF_INET, int protocol = 0, ACE_Reactor *reactor = ACE_Reactor::instance ())
 ~ACE_SSL_SOCK_Connector (void)
 Default dtor.

int connect (ACE_SSL_SOCK_Stream &new_stream, const ACE_Addr &remote_sap, const ACE_Time_Value *timeout = 0, const ACE_Addr &local_sap = ACE_Addr::sap_any, int reuse_addr = 0, int flags = 0, int perms = 0, int protocol_family = PF_INET, int protocol = 0)
int connect (ACE_SSL_SOCK_Stream &new_stream, const ACE_Addr &remote_sap, ACE_QoS_Params qos_params, const ACE_Time_Value *timeout = 0, const ACE_Addr &local_sap = ACE_Addr::sap_any, ACE_Protocol_Info *protocolinfo = 0, ACE_SOCK_GROUP g = 0, u_long flags = 0, int reuse_addr = 0, int perms = 0, int protocol_family = PF_INET, int protocol = 0)
int complete (ACE_SSL_SOCK_Stream &new_stream, ACE_Addr *remote_sap = 0, const ACE_Time_Value *timeout = 0)
int reset_new_handle (ACE_HANDLE handle)
 Resets any event associations on this handle.

void reactor (ACE_Reactor *r)
 Set the Reactor used when completing the SSL active connection.

ACE_Reactorreactor (void) const
 Return the Reactor used when completing the SSL active connection.

void dump (void) const
 Dump the state of an object.


Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.


Protected Methods

int ssl_connect (ACE_SSL_SOCK_Stream &new_stream)
 Complete blocking SSL active connection.

int ssl_connect (ACE_SSL_SOCK_Stream &new_stream, const ACE_Time_Value *timeout)
 Complete non-blocking SSL active connection.


Private Attributes

ACE_SOCK_Connector connector_
 The class that does all of the non-secure socket connection. It is default contructed, and subsequently used by connect().

ACE_Reactorreactor_
 Pointer to the Reactor responsible for dispatching the event handler responsible for completing the SSL active connection.


Detailed Description

Defines a factory that creates new s actively.

The ACE_SSL_SOCK_Connector doesn't have a socket of its own, i.e., it simply "borrows" the one from the ACE_SSL_SOCK_Stream that's being connected. The reason for this is that the underlying socket API doesn't use a "factory" socket to connect "data-mode" sockets. Therefore, there's no need to inherit ACE_SSL_SOCK_Connector from ACE_SSL_SOCK.

Since SSL is record-oriented, some additional steps must be taken to make the ACE_SSL_SOCK_Connector interact properly with the Reactor (if one is used) when performing non-blocking connect() calls. In particular, the ACE_SSL_SOCK_Connector registers an event handler with the Reactor set in the constructor or in the ACE_SSL_SOCK_Connector::reactor() method. If no Reactor is explicitly set, the singleton Reactor instance will be used.

Note:
The user must currently ensure that only one thread services a given SSL session at any given time since some underlying SSL implementations, such as OpenSSL, are not entirely thread-safe or reentrant.


Member Typedef Documentation

typedef ACE_INET_Addr ACE_SSL_SOCK_Connector::PEER_ADDR
 

typedef ACE_SSL_SOCK_Stream ACE_SSL_SOCK_Connector::PEER_STREAM
 


Constructor & Destructor Documentation

ASYS_INLINE ACE_SSL_SOCK_Connector::ACE_SSL_SOCK_Connector ( ACE_Reactor * reactor = ACE_Reactor::instance () )
 

Default constructor.

ACE_SSL_SOCK_Connector::ACE_SSL_SOCK_Connector ( ACE_SSL_SOCK_Stream & new_stream,
const ACE_Addr & remote_sap,
const ACE_Time_Value * timeout = 0,
const ACE_Addr & local_sap = ACE_Addr::sap_any,
int reuse_addr = 0,
int flags = 0,
int perms = 0,
int protocol_family = PF_INET,
int protocol = 0,
ACE_Reactor * reactor = ACE_Reactor::instance () )
 

Actively connect and produce a <new_stream> if things go well. The <remote_sap> is the address that we are trying to connect with. The <timeout> is the amount of time to wait to connect. If it's 0 then we block indefinitely. If *timeout == {0, 0} then the connection is done using non-blocking mode. In this case, if the connection can't be made immediately the value of -1 is returned with <errno == EWOULDBLOCK>. If *timeout > {0, 0} then this is the amount of time to wait before timing out. If the time expires before the connection is made <errno == ETIME>. The <local_sap> is the value of local address to bind to. If it's the default value of then the user is letting the OS do the binding. If <reuse_addr> == 1 then the <local_addr> is reused, even if it hasn't been cleanedup yet.

ACE_SSL_SOCK_Connector::ACE_SSL_SOCK_Connector ( ACE_SSL_SOCK_Stream & new_stream,
const ACE_Addr & remote_sap,
ACE_QoS_Params qos_params,
const ACE_Time_Value * timeout = 0,
const ACE_Addr & local_sap = ACE_Addr::sap_any,
ACE_Protocol_Info * protocolinfo = 0,
ACE_SOCK_GROUP g = 0,
u_long flags = 0,
int reuse_addr = 0,
int perms = 0,
int protocol_family = PF_INET,
int protocol = 0,
ACE_Reactor * reactor = ACE_Reactor::instance () )
 

Actively connect and produce a <new_stream> if things go well. The <remote_sap> is the address that we are trying to connect with. The <qos_params> contains QoS parameters that are passed to RSVP. The <timeout> is the amount of time to wait to connect. If it's 0 then we block indefinitely. If *timeout == {0, 0} then the connection is done using non-blocking mode. In this case, if the connection can't be made immediately the value of -1 is returned with <errno == EWOULDBLOCK>. If *timeout > {0, 0} then this is the amount of time to wait before timing out. If the time expires before the connection is made <errno == ETIME>. The <local_sap> is the value of local address to bind to. If it's the default value of then the user is letting the OS do the binding. If <reuse_addr> == 1 then the <local_addr> is reused, even if it hasn't been cleanedup yet.

ACE_SSL_SOCK_Connector::~ACE_SSL_SOCK_Connector ( void )
 

Default dtor.


Member Function Documentation

int ACE_SSL_SOCK_Connector::complete ( ACE_SSL_SOCK_Stream & new_stream,
ACE_Addr * remote_sap = 0,
const ACE_Time_Value * timeout = 0 )
 

Try to complete a non-blocking connection. If connection completion is successful then <new_stream> contains the connected ACE_SSL_SOCK_Stream. If <remote_sap> is non-NULL then it will contain the address of the connected peer.

int ACE_SSL_SOCK_Connector::connect ( ACE_SSL_SOCK_Stream & new_stream,
const ACE_Addr & remote_sap,
ACE_QoS_Params qos_params,
const ACE_Time_Value * timeout = 0,
const ACE_Addr & local_sap = ACE_Addr::sap_any,
ACE_Protocol_Info * protocolinfo = 0,
ACE_SOCK_GROUP g = 0,
u_long flags = 0,
int reuse_addr = 0,
int perms = 0,
int protocol_family = PF_INET,
int protocol = 0 )
 

Actively connect and produce a <new_stream> if things go well. The <remote_sap> is the address that we are trying to connect with. The <qos_params> contains QoS parameters that are passed to RSVP. The <timeout> is the amount of time to wait to connect. If it's 0 then we block indefinitely. If *timeout == {0, 0} then the connection is done using non-blocking mode. In this case, if the connection can't be made immediately the value of -1 is returned with <errno == EWOULDBLOCK>. If *timeout > {0, 0} then this is the amount of time to wait before timing out. If the time expires before the connection is made <errno == ETIME>. The <local_sap> is the value of local address to bind to. If it's the default value of then the user is letting the OS do the binding. If <reuse_addr> == 1 then the <local_addr> is reused, even if it hasn't been cleanedup yet.

int ACE_SSL_SOCK_Connector::connect ( ACE_SSL_SOCK_Stream & new_stream,
const ACE_Addr & remote_sap,
const ACE_Time_Value * timeout = 0,
const ACE_Addr & local_sap = ACE_Addr::sap_any,
int reuse_addr = 0,
int flags = 0,
int perms = 0,
int protocol_family = PF_INET,
int protocol = 0 )
 

Actively connect and produce a <new_stream> if things go well. The <remote_sap> is the address that we are trying to connect with. The <timeout> is the amount of time to wait to connect. If it's 0 then we block indefinitely. If *timeout == {0, 0} then the connection is done using non-blocking mode. In this case, if the connection can't be made immediately the value of -1 is returned with <errno == EWOULDBLOCK>. If *timeout > {0, 0} then this is the amount of time to wait before timing out. If the time expires before the connection is made <errno == ETIME>. The <local_sap> is the value of local address to bind to. If it's the default value of then the user is letting the OS do the binding. If <reuse_addr> == 1 then the <local_addr> is reused, even if it hasn't been cleanedup yet.

ASYS_INLINE void ACE_SSL_SOCK_Connector::dump ( void ) const
 

Dump the state of an object.

ASYS_INLINE ACE_Reactor * ACE_SSL_SOCK_Connector::reactor ( void ) const
 

Return the Reactor used when completing the SSL active connection.

ASYS_INLINE void ACE_SSL_SOCK_Connector::reactor ( ACE_Reactor * r )
 

Set the Reactor used when completing the SSL active connection.

ASYS_INLINE int ACE_SSL_SOCK_Connector::reset_new_handle ( ACE_HANDLE handle )
 

Resets any event associations on this handle.

int ACE_SSL_SOCK_Connector::ssl_connect ( ACE_SSL_SOCK_Stream & new_stream,
const ACE_Time_Value * timeout ) [protected]
 

Complete non-blocking SSL active connection.

int ACE_SSL_SOCK_Connector::ssl_connect ( ACE_SSL_SOCK_Stream & new_stream ) [protected]
 

Complete blocking SSL active connection.


Member Data Documentation

ACE_SSL_SOCK_Connector::ACE_ALLOC_HOOK_DECLARE
 

Declare the dynamic allocation hooks.

ACE_SOCK_Connector ACE_SSL_SOCK_Connector::connector_ [private]
 

The class that does all of the non-secure socket connection. It is default contructed, and subsequently used by connect().

ACE_Reactor * ACE_SSL_SOCK_Connector::reactor_ [private]
 

Pointer to the Reactor responsible for dispatching the event handler responsible for completing the SSL active connection.


The documentation for this class was generated from the following files:
Generated at Sat Dec 1 11:19:02 2001 for ACE_SSL by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000