diff options
Diffstat (limited to 'TAO/tao/PI/PI.cpp')
-rw-r--r-- | TAO/tao/PI/PI.cpp | 57 |
1 files changed, 51 insertions, 6 deletions
diff --git a/TAO/tao/PI/PI.cpp b/TAO/tao/PI/PI.cpp index 3088ad074b6..3e18928cf8c 100644 --- a/TAO/tao/PI/PI.cpp +++ b/TAO/tao/PI/PI.cpp @@ -1,13 +1,18 @@ -#include "PI.h" -#include "ORBInitializer_Registry_Impl.h" -#include "PolicyFactory_Loader.h" -#include "ClientRequestInterceptor_Factory_Impl.h" -#include "PICurrent_Loader.h" +#include "tao/PI/PI.h" +#include "tao/PI/ORBInitializer_Registry_Impl.h" +#include "tao/PI/PolicyFactory_Loader.h" +#include "tao/PI/ClientRequestInterceptor_Factory_Impl.h" +#include "tao/PI/PICurrent_Loader.h" +#include "tao/PI/PI_ORBInitializer.h" +#include "tao/ORBInitializer_Registry.h" +#include "tao/ORB_Constants.h" ACE_RCSID (PI, PI, "$Id$") +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + int TAO_PI_Init::Initializer (void) { @@ -17,6 +22,46 @@ TAO_PI_Init::Initializer (void) ACE_Service_Config::process_directive (ace_svc_desc_TAO_PICurrent_Loader); #endif /* TAO_HAS_INTERCEPTORS == 1 */ - return ACE_Service_Config::process_directive (ace_svc_desc_ORBInitializer_Registry); + int status = ACE_Service_Config::process_directive ( + ace_svc_desc_ORBInitializer_Registry); +#if TAO_HAS_INTERCEPTORS == 1 + PortableInterceptor::ORBInitializer_ptr temp_orb_initializer = + PortableInterceptor::ORBInitializer::_nil (); + + PortableInterceptor::ORBInitializer_var orb_initializer; + + ACE_DECLARE_NEW_CORBA_ENV; + ACE_TRY + { + /// Register the PI ORBInitializer. + + ACE_NEW_THROW_EX (temp_orb_initializer, + TAO_PI_ORBInitializer, + CORBA::NO_MEMORY ( + CORBA::SystemException::_tao_minor_code ( + TAO::VMCID, + ENOMEM), + CORBA::COMPLETED_NO)); + ACE_TRY_CHECK; + + orb_initializer = temp_orb_initializer; + + PortableInterceptor::register_orb_initializer (orb_initializer.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + if (TAO_debug_level > 0) + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "(%P | %t) Caught exception:"); + } + return -1; + } + ACE_ENDTRY; +#endif /* TAO_HAS_INTERCEPTORS == 1 */ + return status; } +TAO_END_VERSIONED_NAMESPACE_DECL |