diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2001-02-21 17:27:26 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2001-02-21 17:27:26 +0000 |
commit | 2388be1183e98be73274ad4cc845fb7adeb52334 (patch) | |
tree | 3ef80e524d2cceda94647d3112bdd70e62e5e9e5 | |
parent | a62f2cf47259229b1c47ddd2633412d690cd799d (diff) | |
download | ATCD-2388be1183e98be73274ad4cc845fb7adeb52334.tar.gz |
ChangeLogTag:Wed Feb 21 08:38:05 2001 Carlos O'Ryan <coryan@uci.edu>
-rw-r--r-- | TAO/ChangeLogs/ChangeLog-02a | 14 | ||||
-rw-r--r-- | TAO/tao/RT_ORBInitializer.cpp | 36 |
2 files changed, 35 insertions, 15 deletions
diff --git a/TAO/ChangeLogs/ChangeLog-02a b/TAO/ChangeLogs/ChangeLog-02a index c6b47a10cfc..1aa7d8f9415 100644 --- a/TAO/ChangeLogs/ChangeLog-02a +++ b/TAO/ChangeLogs/ChangeLog-02a @@ -1,8 +1,16 @@ +Wed Feb 21 08:38:05 2001 Carlos O'Ryan <coryan@uci.edu> + + * tao/RT_ORBInitializer.cpp: + Add RT_ORB_Loader to the service repository, otherwise + resolve_initial_references("RT_ORB") fails for static builds. + Don't add a static service twice, otherwise the old copy is + destroyed and sometimes the ORB caches it. + Wed Feb 21 10:50:46 2001 Balachandran Natarajan <bala@cs.wustl.edu> - * docs/Options.html: Changed the documentation for - -ORBConnectionCachingStrategy and -ORBPurgePercentage - options. + * docs/Options.html: Changed the documentation for + -ORBConnectionCachingStrategy and -ORBPurgePercentage + options. Wed Feb 21 07:27:58 2001 Carlos O'Ryan <coryan@uci.edu> diff --git a/TAO/tao/RT_ORBInitializer.cpp b/TAO/tao/RT_ORBInitializer.cpp index eaabdafabf1..e27cedbbe9b 100644 --- a/TAO/tao/RT_ORBInitializer.cpp +++ b/TAO/tao/RT_ORBInitializer.cpp @@ -17,22 +17,23 @@ ACE_RCSID (TAO, #include "tao/Priority_Mapping_Manager.h" #include "tao/Exception.h" #include "tao/ORB_Core.h" +#include "tao/RT_ORB_Loader.h" #include "ace/Service_Repository.h" #include "ace/Svc_Conf.h" -void -TAO_RT_ORBInitializer::pre_init ( - PortableInterceptor::ORBInitInfo_ptr info - TAO_ENV_ARG_DECL) - ACE_THROW_SPEC ((CORBA::SystemException)) +static void +add_static_service (const ACE_Static_Svc_Descriptor &desc) { - TAO_ENV_ARG_DEFN; - - // Just a convenient way to say the same thing. - const ACE_Static_Svc_Descriptor &desc = - ace_svc_desc_TAO_RT_Protocols_Hooks; - + const ACE_Service_Type *service_type; + if (ACE_Service_Repository::instance ()->find (desc.name_, + &service_type, + 0) >= 0) + { + // The service is already there, just return + return; + } + ACE_Service_Object_Exterminator gobbler; void *sym = (*desc.alloc_)(&gobbler); @@ -44,7 +45,6 @@ TAO_RT_ORBInitializer::pre_init ( gobbler); // @@ Raise exception - ACE_Service_Type *service_type; ACE_NEW (service_type, ACE_Service_Type (desc.name_, service_type_impl, @@ -52,6 +52,18 @@ TAO_RT_ORBInitializer::pre_init ( desc.active_)); // @@ Error checking (void) ACE_Service_Repository::instance ()->insert (service_type); +} + +void +TAO_RT_ORBInitializer::pre_init ( + PortableInterceptor::ORBInitInfo_ptr info + TAO_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + TAO_ENV_ARG_DEFN; + + add_static_service (ace_svc_desc_TAO_RT_Protocols_Hooks); + add_static_service (ace_svc_desc_TAO_RT_ORB_Loader); // Sets the name of the Protocol_Hooks to be the RT_Protocols_Hooks. TAO_ORB_Core::set_protocols_hooks ("RT_Protocols_Hooks"); |