diff options
author | Ossama Othman <ossama-othman@users.noreply.github.com> | 2002-05-18 15:21:55 +0000 |
---|---|---|
committer | Ossama Othman <ossama-othman@users.noreply.github.com> | 2002-05-18 15:21:55 +0000 |
commit | b819882ed380d918119d0d25ea13c65a1c23c0f4 (patch) | |
tree | 610445283efc1f82099edaddfbadaa3159a20f45 | |
parent | b240197ac249230a63ac446b2e84756993469912 (diff) | |
download | ATCD-b819882ed380d918119d0d25ea13c65a1c23c0f4.tar.gz |
ChangeLogTag:Sat May 18 08:19:48 2002 Ossama Othman <ossama@uci.edu>
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | ChangeLogs/ChangeLog-02a | 9 | ||||
-rw-r--r-- | ChangeLogs/ChangeLog-03a | 9 | ||||
-rw-r--r-- | ace/SSL/SSL_Connector.cpp | 196 | ||||
-rw-r--r-- | ace/SSL/SSL_Connector.h | 137 |
5 files changed, 27 insertions, 333 deletions
diff --git a/ChangeLog b/ChangeLog index ef8068a7631..8598b2d172b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Sat May 18 08:19:48 2002 Ossama Othman <ossama@uci.edu> + + * ace/SSL/SSL_Connector.h: + * ace/SSL/SSL_Connector.cpp: + + Temporarily removed these files since there are still some + thread-safefy issues to be addressed in the implementation. + Better to wait until after the forthcoming beta to ship them. + Fri May 17 07:32:49 2002 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> * ace/Log_Msg.cpp: Replaced ACE_NEW_RETURN_I with ACE_NEW_RETURN. diff --git a/ChangeLogs/ChangeLog-02a b/ChangeLogs/ChangeLog-02a index ef8068a7631..8598b2d172b 100644 --- a/ChangeLogs/ChangeLog-02a +++ b/ChangeLogs/ChangeLog-02a @@ -1,3 +1,12 @@ +Sat May 18 08:19:48 2002 Ossama Othman <ossama@uci.edu> + + * ace/SSL/SSL_Connector.h: + * ace/SSL/SSL_Connector.cpp: + + Temporarily removed these files since there are still some + thread-safefy issues to be addressed in the implementation. + Better to wait until after the forthcoming beta to ship them. + Fri May 17 07:32:49 2002 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> * ace/Log_Msg.cpp: Replaced ACE_NEW_RETURN_I with ACE_NEW_RETURN. diff --git a/ChangeLogs/ChangeLog-03a b/ChangeLogs/ChangeLog-03a index ef8068a7631..8598b2d172b 100644 --- a/ChangeLogs/ChangeLog-03a +++ b/ChangeLogs/ChangeLog-03a @@ -1,3 +1,12 @@ +Sat May 18 08:19:48 2002 Ossama Othman <ossama@uci.edu> + + * ace/SSL/SSL_Connector.h: + * ace/SSL/SSL_Connector.cpp: + + Temporarily removed these files since there are still some + thread-safefy issues to be addressed in the implementation. + Better to wait until after the forthcoming beta to ship them. + Fri May 17 07:32:49 2002 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> * ace/Log_Msg.cpp: Replaced ACE_NEW_RETURN_I with ACE_NEW_RETURN. diff --git a/ace/SSL/SSL_Connector.cpp b/ace/SSL/SSL_Connector.cpp deleted file mode 100644 index 8d4e55dd3da..00000000000 --- a/ace/SSL/SSL_Connector.cpp +++ /dev/null @@ -1,196 +0,0 @@ -#include "SSL_Connector.h" - -ACE_RCSID (ACE_SSL, - SSL_Connector, - "$Id$") - - -// Shorthand names. -#define SVH SVC_HANDLER -#define PR_CO_1 ACE_PEER_CONNECTOR_1 -#define PR_CO_2 ACE_PEER_CONNECTOR_2 -#define PR_AD ACE_PEER_CONNECTOR_ADDR - - -template <class SVH, PR_CO_1> -ACE_SSL_Connector<SVH, PR_CO_2>::ACE_SSL_Connector (ACE_Reactor *r, - int flags) - : ACE_Connector<SVH, PR_CO_2> (r, flags) -{ -} - -template <class SVH, PR_CO_1> int -ACE_SSL_Connector<SVH, PR_CO_2>::handle_input (ACE_HANDLE handle) -{ - ACE_TRACE ("ACE_SSL_Connector<SVH, PR_CO_2>::handle_input"); - - // The TCP connection has either failed or it was previously - // completed. If it was previously completed then complete the SSL - // connection/handshake. - - // @@ It doesn't look like we'll ever get here since the - // ACE_SSL_SOCK_Connector::ssl_connect() method doesn't return - // until the SSL connection/handshake is completed. In case its - // implementation ever changes, this method may be needed. - - int result = 0; - ACE_Connector<SVH, PR_CO_2>::AST * ast = 0; - - if (this->handler_map_.find (handle, ast) == 0) - { - ACE_SSL_SOCK_Stream & new_stream = ast->svc_handler ()->peer (); - - PR_AD raddr; - - // Check to see if the TCP connection was previously completed. - if (new_stream.peer ().get_remote_addr (raddr) == -1) - { - ACE_Timer_Queue * tq = this->reactor ()->timer_queue (); - - ACE_Time_Value timer_buf (0); - ACE_Time_Value * tv = tq->calculate_timeout (0, &timer_buf); - - if (this->connector ().complete (new_stream, 0, tv) == 0) - return this->ACE_Connector<SVH, PR_CO_2>::handle_output (handle); - } - - if (errno != EWOULDBLOCK) - // Connection failed. Cleanup resources. - return this->ACE_Connector<SVH, PR_CO_2>::handle_input (handle); - } - - return result; -} - -template <class SVH, PR_CO_1> int -ACE_SSL_Connector<SVH, PR_CO_2>::handle_output (ACE_HANDLE handle) -{ - ACE_TRACE ("ACE_SSL_Connector<SVH, PR_CO_2>::handle_output"); - - // The TCP connection has completed. Now complete the SSL - // connection/handshake. - - ACE_Connector<SVH, PR_CO_2>::AST * ast = 0; - if (this->handler_map_.find (handle, ast) == 0) - { - ACE_SSL_SOCK_Stream & new_stream = ast->svc_handler ()->peer (); - - ACE_Timer_Queue * tq = this->reactor ()->timer_queue (); - - ACE_Time_Value timer_buf (0); - ACE_Time_Value * tv = tq->calculate_timeout (0, &timer_buf); - - // Delegate completion to the underlying connector. - if (this->connector ().complete (new_stream, 0, tv) == 0) - return this->ACE_Connector<SVH, PR_CO_2>::handle_output (handle); - else if (errno != EWOULDBLOCK) - // Connection failed. Cleanup resources. - return this->ACE_Connector<SVH, PR_CO_2>::handle_input (handle); - } - - return 0; -} - -// ------------------------------------------------------------ - -template <class SVH, PR_CO_1> -ACE_SSL_Strategy_Connector<SVH, PR_CO_2>::ACE_SSL_Strategy_Connector - (ACE_Reactor *reactor, - ACE_Creation_Strategy<SVC_HANDLER> *cre_s, - ACE_Connect_Strategy<SVC_HANDLER, ACE_PEER_CONNECTOR_2> *conn_s, - ACE_Concurrency_Strategy<SVC_HANDLER> *con_s, - int flags) - : ACE_Strategy_Connector<SVH, PR_CO_2> (reactor, - cre_s, - conn_s, - con_s, - flags) -{ - ACE_TRACE ("ACE_SSL_Strategy_Connector<SVH, PR_CO_2>::ACE_SSL_Strategy_Connector"); -} - -template <class SVH, PR_CO_1> int -ACE_SSL_Strategy_Connector<SVH, PR_CO_2>::handle_input (ACE_HANDLE handle) -{ - ACE_TRACE ("ACE_SSL_Strategy_Connector<SVH, PR_CO_2>::handle_input"); - - - // @@ Mucho code duplication here, but I couldn't get around the - // multiple inheritance issues introduced when inheriting from - // both ACE_Strategy_Connector and ACE_SSL_Connector. - // -Ossama - - - // The TCP connection has either failed or it was previously - // completed. If it was previously completed then complete the SSL - // connection/handshake. - - // @@ It doesn't look like we'll ever get here since the - // ACE_SSL_SOCK_Connector::ssl_connect() method doesn't return - // until the SSL connection/handshake is completed. In case its - // implementation ever changes, this method may be needed. - - int result = 0; - ACE_Connector<SVH, PR_CO_2>::AST * ast = 0; - - if (this->handler_map_.find (handle, ast) == 0) - { - ACE_SSL_SOCK_Stream & new_stream = ast->svc_handler ()->peer (); - - PR_AD raddr; - - // Check to see if the TCP connection was previously completed. - if (new_stream.peer ().get_remote_addr (raddr) == -1) - { - ACE_Timer_Queue * tq = this->reactor ()->timer_queue (); - - ACE_Time_Value timer_buf (0); - ACE_Time_Value * tv = tq->calculate_timeout (0, &timer_buf); - - if (this->connector ().complete (new_stream, 0, tv) == 0) - return this->ACE_Connector<SVH, PR_CO_2>::handle_output (handle); - } - - if (errno != EWOULDBLOCK) - // Connection failed. Cleanup resources. - return this->ACE_Connector<SVH, PR_CO_2>::handle_input (handle); - } - - return result; -} - -template <class SVH, PR_CO_1> int -ACE_SSL_Strategy_Connector<SVH, PR_CO_2>::handle_output (ACE_HANDLE handle) -{ - ACE_TRACE ("ACE_SSL_Strategy_Connector<SVH, PR_CO_2>::handle_output"); - - - // @@ Mucho code duplication here, but I couldn't get around the - // multiple inheritance issues introduced when inheriting from - // both ACE_Strategy_Connector and ACE_SSL_Connector. - // -Ossama - - - // The TCP connection has completed. Now complete the SSL - // connection/handshake. - - ACE_Connector<SVH, PR_CO_2>::AST * ast = 0; - if (this->handler_map_.find (handle, ast) == 0) - { - ACE_SSL_SOCK_Stream & new_stream = ast->svc_handler ()->peer (); - - ACE_Timer_Queue * tq = this->reactor ()->timer_queue (); - - ACE_Time_Value timer_buf (0); - ACE_Time_Value * tv = tq->calculate_timeout (0, &timer_buf); - - // Delegate completion to the underlying connector. - if (this->connector ().complete (new_stream, 0, tv) == 0) - return this->ACE_Connector<SVH, PR_CO_2>::handle_output (handle); - else if (errno != EWOULDBLOCK) - // Connection failed. Cleanup resources. - return this->ACE_Connector<SVH, PR_CO_2>::handle_input (handle); - } - - return 0; -} diff --git a/ace/SSL/SSL_Connector.h b/ace/SSL/SSL_Connector.h deleted file mode 100644 index 378ae2780dd..00000000000 --- a/ace/SSL/SSL_Connector.h +++ /dev/null @@ -1,137 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file SSL_Connector.h - * - * $Id$ - * - * ACE_SSL-specific implementations of the core classes in - * ace/Connector.h. - * - * @author Ossama Othman <ossama@uci.edu> - */ -//============================================================================= - -#ifndef ACE_SSL_CONNECTOR_H -#define ACE_SSL_CONNECTOR_H - -#include "ace/pre.h" - -#include "ace/Connector.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - - -/** - * @class ACE_SSL_Connector - * - * @brief Class that facilitates non-blocking SSL connections by use - * of the Template Method design pattern. - * - * The standard ACE_Connector class assumes that a connection is - * established once the stream handle becomes writable. However, that - * only holds for protocols with a single handshake, such as TCP. - * Protocols with multiple handshakes, such as SSL, require special - * handling to prevent the connection from being considered completed - * once the stream handle becomes writable. - */ -template <class SVC_HANDLER, ACE_PEER_CONNECTOR_1> -class ACE_SSL_Connector - : public ACE_Connector<SVC_HANDLER, ACE_PEER_CONNECTOR_2> -{ -public: - - /// Constructor. - /** - * @note See the ACE_Connector constructor documentation for - * details. - */ - ACE_SSL_Connector (ACE_Reactor *r = ACE_Reactor::instance (), - int flags = 0); - -protected: - - /** - * handle_input() is normally called when a non-blocking connection - * fails, i.e. when the stream handle becomes readable. However, - * once the first (TCP) handshake is completed, the second (SSL) - * handshake may need to perform reads. In that case, the stream - * handle becoming readable should not be considered a connection - * failure. - */ - virtual int handle_input (ACE_HANDLE); - - /** - * handle_output() is normally called when a non-blocking connection - * succeeds, i.e. when the stream handle becomes writable. However, - * this only applies for single handshake protocols, such as TCP. - * Multi-handshake protocols, such as SSL, require additional - * handling once the initial handshake is completed. - */ - virtual int handle_output (ACE_HANDLE); - -}; - -// ------------------------------------------------------------ - -/** - * @class ACE_SSL_Strategy_Connector - * - * @brief Class that facilitates non-blocking SSL connections by use - * of the Template Method design pattern. - * - * This class is analogous to the ACE_Strategy_Connector class, but - * utilizes the functionality introduced by the ACE_SSL_Connector - * class to handle non-blocking SSL connections correctly. - */ -template <class SVC_HANDLER, ACE_PEER_CONNECTOR_1> -class ACE_SSL_Strategy_Connector - : public ACE_Strategy_Connector <SVC_HANDLER, ACE_PEER_CONNECTOR_2> -{ -public: - - ACE_SSL_Strategy_Connector (ACE_Reactor *r = ACE_Reactor::instance (), - ACE_Creation_Strategy<SVC_HANDLER> * = 0, - ACE_Connect_Strategy<SVC_HANDLER, ACE_PEER_CONNECTOR_2> * = 0, - ACE_Concurrency_Strategy<SVC_HANDLER> * = 0, - int flags = 0); - -protected: - - /** - * handle_input() is normally called when a non-blocking connection - * fails, i.e. when the stream handle becomes readable. However, - * once the first (TCP) handshake is completed, the second (SSL) - * handshake may need to perform reads. In that case, the stream - * handle becoming readable should not be considered a connection - * failure. - */ - virtual int handle_input (ACE_HANDLE); - - /** - * handle_output() is normally called when a non-blocking connection - * succeeds, i.e. when the stream handle becomes writable. However, - * this only applies for single handshake protocols, such as TCP. - * Multi-handshake protocols, such as SSL, require additional - * handling once the initial handshake is completed. - */ - virtual int handle_output (ACE_HANDLE); - -}; - - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "SSL_Connector.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("SSL_Connector.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - - -#include "ace/post.h" - -#endif /* ACE_SSL_CONNECTOR_H */ |