diff options
Diffstat (limited to 'ace/SSL/SSL_SOCK_Connector.h')
-rw-r--r-- | ace/SSL/SSL_SOCK_Connector.h | 48 |
1 files changed, 31 insertions, 17 deletions
diff --git a/ace/SSL/SSL_SOCK_Connector.h b/ace/SSL/SSL_SOCK_Connector.h index 564694247ed..94eae827c18 100644 --- a/ace/SSL/SSL_SOCK_Connector.h +++ b/ace/SSL/SSL_SOCK_Connector.h @@ -6,10 +6,10 @@ * * $Id$ * + * @author Ossama Othman <ossama@uci.edu> + * @author Carlos O'Ryan <coryan@uci.edu> * @author John Heitmann * @author Chris Zimman - * @author Carlos O'Ryan <coryan@uci.edu> - * @author Ossama Othman <ossama@uci.edu> */ //============================================================================= @@ -28,11 +28,13 @@ #include "SSL_SOCK_Stream.h" #include "ace/SOCK_Connector.h" +#include "ace/Reactor.h" /** * @class ACE_SSL_SOCK_Connector * - * @brief Defines a factory that creates new <ACE_Stream>s actively. + * @brief Defines a factory that creates new <ACE_SSL_SOCK_Stream>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 @@ -47,7 +49,8 @@ class ACE_SSL_Export ACE_SSL_SOCK_Connector public: /// Default constructor. - ACE_SSL_SOCK_Connector (void); + ACE_SSL_SOCK_Connector (ACE_Reactor *reactor = + ACE_Reactor::instance ()); /** * Actively connect and produce a <new_stream> if things go well. @@ -72,7 +75,9 @@ public: int flags = 0, int perms = 0, int protocol_family = PF_INET, - int protocol = 0); + int protocol = 0, + ACE_Reactor *reactor = + ACE_Reactor::instance ()); /** * Actively connect and produce a <new_stream> if things go well. @@ -101,7 +106,9 @@ public: int reuse_addr = 0, int perms = 0, int protocol_family = PF_INET, - int protocol = 0); + int protocol = 0, + ACE_Reactor *reactor = + ACE_Reactor::instance ()); /// Default dtor. ~ACE_SSL_SOCK_Connector (void); @@ -163,8 +170,8 @@ public: /** * Try to complete a non-blocking connection. * If connection completion is successful then <new_stream> contains - * the connected ACE_SOCK_Stream. If <remote_sap> is non-NULL then it - * will contain the address of the connected peer. + * the connected ACE_SSL_SOCK_Stream. If <remote_sap> is non-NULL + * then it will contain the address of the connected peer. */ int complete (ACE_SSL_SOCK_Stream &new_stream, ACE_Addr *remote_sap = 0, @@ -173,6 +180,14 @@ public: /// Resets any event associations on this handle int reset_new_handle (ACE_HANDLE handle); + /// Set the Reactor used when completing the SSL active + /// connection. + void reactor (ACE_Reactor *r); + + /// Return the Reactor used when completing the SSL active + /// connection. + ACE_Reactor *reactor (void) const; + /// Meta-type info //@{ typedef ACE_INET_Addr PEER_ADDR; @@ -187,23 +202,22 @@ public: protected: - int shared_connect_start(ACE_SSL_SOCK_Stream &new_stream, - const ACE_Time_Value *timeout = 0, - const ACE_Addr &local_sap = 0); - - int shared_connect_finish(ACE_SSL_SOCK_Stream &new_stream, - const ACE_Time_Value *timeout = 0, - int result = 0); - - /// Complete SSL active connection establishment. + /// Complete blocking SSL active connection. int ssl_connect (ACE_SSL_SOCK_Stream &new_stream); + /// Complete non-blocking SSL active connection. + int ssl_connect (ACE_SSL_SOCK_Stream &new_stream, + const ACE_Time_Value *timeout); + private: /// The class that does all of the non-secure socket connection. /// It is default contructed, and subsequently used by connect(). ACE_SOCK_Connector connector_; + /// Pointer to the Reactor responsible for dispatching the event + /// handler responsible for completing the SSL active connection. + ACE_Reactor *reactor_; }; #if !defined (ACE_LACKS_INLINE_FUNCTIONS) |