SSLIOP_Connector.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 //=============================================================================
00004 /**
00005  *  @file     SSLIOP_Connector.h
00006  *
00007  *  SSLIOP_Connector.h,v 1.46 2006/03/14 06:14:35 jtc Exp
00008  *
00009  *  SSLIOP specific connector processing
00010  *
00011  *  @author Carlos O'Ryan
00012  *  @author Ossama Othman
00013  */
00014 //=============================================================================
00015 
00016 
00017 #ifndef TAO_SSLIOP_CONNECTOR_H
00018 #define TAO_SSLIOP_CONNECTOR_H
00019 
00020 #include /**/ "ace/pre.h"
00021 
00022 #include "ace/config-all.h"
00023 
00024 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00025 # pragma once
00026 #endif /* ACE_LACKS_PRAGMA_ONCE */
00027 
00028 #include "orbsvcs/SSLIOP/IIOP_SSL_Connector.h"
00029 #include "orbsvcs/SSLIOP/SSLIOP_Connection_Handler.h"
00030 
00031 #include "ace/SSL/SSL_SOCK_Connector.h"
00032 
00033 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00034 
00035 /// Forward declarations.
00036 class TAO_Base_Transport_Property;
00037 
00038 class TAO_SSLIOP_Endpoint;
00039 
00040 namespace TAO
00041 {
00042   namespace SSLIOP
00043   {
00044     class OwnCredentials;
00045 
00046     /**
00047      * @class Connector
00048      *
00049      * @brief SSLIOP-specific Connector bridge for pluggable protocols.
00050      *
00051      * Concrete instance of the TAO_Connector class.  Responsible
00052      * for establishing a connection with a server and is called from
00053      * the Connector_Registry.
00054      */
00055     class Connector : public TAO::IIOP_SSL_Connector
00056     {
00057     public:
00058 
00059       /// Constructor.
00060       Connector (::Security::QOP qop);
00061 
00062       /**
00063        * @name The TAO_Connector methods
00064        *
00065        * Please check the documentation in Transport_Connector.h
00066        */
00067       //@{
00068       virtual int open (TAO_ORB_Core *orb_core);
00069       virtual int close (void);
00070       virtual TAO_Transport *connect (TAO::Profile_Transport_Resolver *r,
00071                                       TAO_Transport_Descriptor_Interface *desc,
00072                                       ACE_Time_Value *timeout
00073                                       ACE_ENV_ARG_DECL);
00074 
00075       virtual TAO_Profile *create_profile (TAO_InputCDR& cdr);
00076       virtual int check_prefix (const char *endpoint);
00077       virtual TAO_Profile * corbaloc_scan (const char *ior,
00078                                            size_t &len
00079                                            ACE_ENV_ARG_DECL);
00080 
00081       //@}
00082 
00083     protected:
00084 
00085       /**
00086        * @name @c TAO_Connector Methods
00087        *
00088        * Methods required by the @c TAO_Connector base class.
00089        *
00090        * @see @c TAO_Connector
00091        */
00092       //@{
00093       virtual TAO_Profile * make_profile (ACE_ENV_SINGLE_ARG_DECL);
00094       virtual int cancel_svc_handler (TAO_Connection_Handler * svc_handler);
00095       //@}
00096 
00097       /// SSL-specific profile
00098       TAO_Profile * make_secure_profile (ACE_ENV_SINGLE_ARG_DECL);
00099 
00100       /// IIOP-specific connection establishment.
00101       /**
00102        * @note The IIOP endpoint is extracted from the SSLIOP endpoint.
00103        */
00104       TAO_Transport* iiop_connect (TAO_SSLIOP_Endpoint *ssliop_endpoint,
00105                                    TAO::Profile_Transport_Resolver *r,
00106                                    ACE_Time_Value *timeout
00107                                    ACE_ENV_ARG_DECL);
00108 
00109       /// SSLIOP-specific connection establishment.
00110       TAO_Transport* ssliop_connect (TAO_SSLIOP_Endpoint *ssliop_endpoint,
00111                                      ::Security::QOP qop,
00112                                      const ::Security::EstablishTrust &trust,
00113                                      TAO::Profile_Transport_Resolver *r,
00114                                      TAO_Transport_Descriptor_Interface *desc,
00115                                      ACE_Time_Value *timeout
00116                                      ACE_ENV_ARG_DECL);
00117 
00118       /// Retrieve SSLIOP credentials from the policy overrides list
00119       /// and set up the underlying SSL connection to use the X.509
00120       /// certificates stored within them.
00121       TAO::SSLIOP::OwnCredentials * retrieve_credentials (TAO_Stub *stub,
00122                                                           SSL *ssl
00123                                                           ACE_ENV_ARG_DECL);
00124 
00125     public:
00126 
00127       typedef TAO_Connect_Concurrency_Strategy<Connection_Handler>
00128           CONNECT_CONCURRENCY_STRATEGY;
00129 
00130       typedef TAO_Connect_Creation_Strategy<Connection_Handler>
00131           CONNECT_CREATION_STRATEGY;
00132 
00133       typedef ACE_Connect_Strategy<Connection_Handler,
00134                                    ACE_SSL_SOCK_CONNECTOR>
00135           CONNECT_STRATEGY;
00136 
00137       typedef ACE_Strategy_Connector<Connection_Handler,
00138                                      ACE_SSL_SOCK_CONNECTOR>
00139           BASE_CONNECTOR;
00140 
00141     private:
00142 
00143       /// If zero, connect to IIOP over SSL port by default.
00144       /// Otherwise, connect to the insecure IIOP port.
00145       ::Security::QOP qop_;
00146 
00147       /// Our connect strategy
00148       CONNECT_STRATEGY connect_strategy_;
00149 
00150       /// The connector initiating connection requests for IIOP.
00151       BASE_CONNECTOR base_connector_;
00152 
00153     };
00154 
00155   }  // End SSLIOP namespace.
00156 }  // End TAO namespace.
00157 
00158 TAO_END_VERSIONED_NAMESPACE_DECL
00159 
00160 #include /**/ "ace/post.h"
00161 
00162 #endif  /* TAO_SSLIOP_CONNECTOR_H */

Generated on Thu Nov 9 13:54:14 2006 for TAO_SSLIOP by doxygen 1.3.6