diff options
author | Ossama Othman <ossama-othman@users.noreply.github.com> | 2005-01-19 16:53:12 +0000 |
---|---|---|
committer | Ossama Othman <ossama-othman@users.noreply.github.com> | 2005-01-19 16:53:12 +0000 |
commit | 0bdadbf87e8c45740e6f355b4bc274298a853081 (patch) | |
tree | 4f0421a430c5fe5c68ba80bd904c12b32359d5a4 /TAO/tao/ORBInitializer_Registry.cpp | |
parent | 1f91ef18804001738088f95b72639800b34a5625 (diff) | |
download | ATCD-0bdadbf87e8c45740e6f355b4bc274298a853081.tar.gz |
ChangeLogTag:Wed Jan 19 09:31:05 2005 Ossama Othman <ossama@dre.vanderbilt.edu>
Diffstat (limited to 'TAO/tao/ORBInitializer_Registry.cpp')
-rw-r--r-- | TAO/tao/ORBInitializer_Registry.cpp | 81 |
1 files changed, 48 insertions, 33 deletions
diff --git a/TAO/tao/ORBInitializer_Registry.cpp b/TAO/tao/ORBInitializer_Registry.cpp index c6208e7905b..c6fb209537f 100644 --- a/TAO/tao/ORBInitializer_Registry.cpp +++ b/TAO/tao/ORBInitializer_Registry.cpp @@ -22,49 +22,56 @@ PortableInterceptor::register_orb_initializer ( PortableInterceptor::ORBInitializer_ptr init ACE_ENV_ARG_DECL) { - // Using ACE_Static_Object_Lock::instance() precludes - // <register_orb_initializer> from being called within a static - // object CTOR. - ACE_MT (ACE_GUARD (TAO_SYNCH_RECURSIVE_MUTEX, - guard, - *ACE_Static_Object_Lock::instance ())); - - // Make sure TAO's singleton manager is initialized. - if (TAO_Singleton_Manager::instance ()->init () == -1) - { - ACE_ERROR ((LM_ERROR, - ACE_TEXT ("(%P|%t) register_orb_initializer: ") - ACE_TEXT ("Unable to pre-initialize TAO\n"))); - } - - CORBA::ORB::init_orb_globals (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; + { + // Using ACE_Static_Object_Lock::instance() precludes + // register_orb_initializer() from being called within a static + // object CTOR. + ACE_MT (ACE_GUARD (TAO_SYNCH_RECURSIVE_MUTEX, + guard, + *ACE_Static_Object_Lock::instance ())); + + // Make sure TAO's singleton manager is initialized. + if (TAO_Singleton_Manager::instance ()->init () == -1) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%P|%t) register_orb_initializer: ") + ACE_TEXT ("Unable to pre-initialize TAO\n"))); + } + + TAO::ORB::init_orb_globals (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + } // Make sure the following is done after the global ORB // initialization since we need to have exceptions initialized. - TAO_ORBInitializer_Registry::instance ()->register_orb_initializer ( + TAO::ORBInitializer_Registry::instance ()->register_orb_initializer ( init ACE_ENV_ARG_PARAMETER); } // ------------------------------------------------------------------ -TAO_ORBInitializer_Registry::TAO_ORBInitializer_Registry (void) - : initializers_ () +TAO::ORBInitializer_Registry::ORBInitializer_Registry (void) + : lock_ (), + initializers_ () { } void -TAO_ORBInitializer_Registry::register_orb_initializer ( +TAO::ORBInitializer_Registry::register_orb_initializer ( PortableInterceptor::ORBInitializer_ptr init ACE_ENV_ARG_DECL) { if (!CORBA::is_nil (init)) { + ACE_GUARD (TAO_SYNCH_MUTEX, + guard, + this->lock_); + // Increase the length of the ORBInitializer array by one. - const size_t cur_len = this->initializers_.size (); - const size_t new_len = cur_len + 1; + size_t const cur_len = this->initializers_.size (); + size_t const new_len = cur_len + 1; if (this->initializers_.size (new_len) != 0) ACE_THROW (CORBA::INTERNAL ()); @@ -81,11 +88,15 @@ TAO_ORBInitializer_Registry::register_orb_initializer ( } void -TAO_ORBInitializer_Registry::pre_init ( +TAO::ORBInitializer_Registry::pre_init ( PortableInterceptor::ORBInitInfo_ptr info ACE_ENV_ARG_DECL) { - const size_t initializer_count = this->initializers_.size (); + ACE_GUARD (TAO_SYNCH_MUTEX, + guard, + this->lock_); + + size_t const initializer_count (this->initializers_.size ()); for (size_t i = 0; i < initializer_count; ++i) { this->initializers_[i]->pre_init (info @@ -95,11 +106,15 @@ TAO_ORBInitializer_Registry::pre_init ( } void -TAO_ORBInitializer_Registry::post_init ( +TAO::ORBInitializer_Registry::post_init ( PortableInterceptor::ORBInitInfo_ptr info ACE_ENV_ARG_DECL) { - const size_t initializer_count = this->initializers_.size (); + ACE_GUARD (TAO_SYNCH_MUTEX, + guard, + this->lock_); + + size_t const initializer_count (this->initializers_.size ()); for (size_t i = 0; i < initializer_count; ++i) { this->initializers_[i]->post_init (info @@ -108,25 +123,25 @@ TAO_ORBInitializer_Registry::post_init ( } } -TAO_ORBInitializer_Registry * -TAO_ORBInitializer_Registry::instance (void) +TAO::ORBInitializer_Registry * +TAO::ORBInitializer_Registry::instance (void) { return - TAO_Singleton<TAO_ORBInitializer_Registry, TAO_SYNCH_MUTEX>::instance (); + TAO_Singleton<TAO::ORBInitializer_Registry, TAO_SYNCH_MUTEX>::instance (); } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class TAO_Singleton<TAO_ORBInitializer_Registry, TAO_SYNCH_MUTEX>; +template class TAO_Singleton<TAO::ORBInitializer_Registry, TAO_SYNCH_MUTEX>; template class ACE_Array_Base<PortableInterceptor::ORBInitializer_var>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate TAO_Singleton<TAO_ORBInitializer_Registry, TAO_SYNCH_MUTEX> +#pragma instantiate TAO_Singleton<TAO::ORBInitializer_Registry, TAO_SYNCH_MUTEX> #pragma instantiate ACE_Array_Base<PortableInterceptor::ORBInitializer_var> #elif defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template TAO_Singleton<TAO_ORBInitializer_Registry, TAO_SYNCH_MUTEX> * TAO_Singleton<TAO_ORBInitializer_Registry, TAO_SYNCH_MUTEX>::singleton_; +template TAO_Singleton<TAO::ORBInitializer_Registry, TAO_SYNCH_MUTEX> * TAO_Singleton<TAO_ORBInitializer_Registry, TAO_SYNCH_MUTEX>::singleton_; #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ |