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