PI.cpp

Go to the documentation of this file.
00001 #include "tao/PI/PI.h"
00002 #include "tao/PI/ORBInitializer_Registry_Impl.h"
00003 #include "tao/PI/PolicyFactory_Loader.h"
00004 #include "tao/PI/ClientRequestInterceptor_Factory_Impl.h"
00005 #include "tao/PI/PICurrent_Loader.h"
00006 #include "tao/PI/PI_ORBInitializer.h"
00007 #include "tao/ORBInitializer_Registry.h"
00008 #include "tao/ORB_Constants.h"
00009 
00010 ACE_RCSID (PI,
00011            PI,
00012            "PI.cpp,v 1.12 2006/05/30 14:09:02 jwillemsen Exp")
00013 
00014 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00015 
00016 
00017 // This initializer is very similar to the ORBInitializer_Registry::init.
00018 // This one is used during static initialization while the other is used
00019 // when PI is a shared library.
00020 int
00021 TAO_PI_Init::Initializer (void)
00022 {
00023 #if TAO_HAS_INTERCEPTORS == 1
00024   ACE_Service_Config::process_directive (ace_svc_desc_TAO_ClientRequestInterceptor_Adapter_Factory_Impl);
00025 
00026   ACE_Service_Config::process_directive (ace_svc_desc_TAO_PICurrent_Loader);
00027 #endif  /* TAO_HAS_INTERCEPTORS == 1 */
00028 
00029   int const status = ACE_Service_Config::process_directive (
00030                             ace_svc_desc_ORBInitializer_Registry);
00031 
00032 #if  TAO_HAS_INTERCEPTORS == 1
00033   PortableInterceptor::ORBInitializer_ptr temp_orb_initializer =
00034     PortableInterceptor::ORBInitializer::_nil ();
00035 
00036   PortableInterceptor::ORBInitializer_var orb_initializer;
00037 
00038   ACE_DECLARE_NEW_CORBA_ENV;
00039   ACE_TRY
00040     {
00041       /// Register the PI ORBInitializer.
00042 
00043       ACE_NEW_THROW_EX (temp_orb_initializer,
00044                         TAO_PI_ORBInitializer,
00045                         CORBA::NO_MEMORY (
00046                           CORBA::SystemException::_tao_minor_code (
00047                             TAO::VMCID,
00048                             ENOMEM),
00049                           CORBA::COMPLETED_NO));
00050       ACE_TRY_CHECK;
00051 
00052       orb_initializer = temp_orb_initializer;
00053 
00054       PortableInterceptor::register_orb_initializer (orb_initializer.in ()
00055                                                      ACE_ENV_ARG_PARAMETER);
00056       ACE_TRY_CHECK;
00057     }
00058   ACE_CATCHANY
00059     {
00060       if (TAO_debug_level > 0)
00061         {
00062           ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
00063                                "(%P | %t) Caught exception:");
00064         }
00065       return -1;
00066     }
00067   ACE_ENDTRY;
00068 #endif  /* TAO_HAS_INTERCEPTORS == 1 */
00069   return status;
00070 }
00071 
00072 TAO_END_VERSIONED_NAMESPACE_DECL

Generated on Thu Nov 9 12:51:39 2006 for TAO_PI by doxygen 1.3.6