summaryrefslogtreecommitdiff
path: root/TAO/tao/ORBInitializer_Registry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/ORBInitializer_Registry.cpp')
-rw-r--r--TAO/tao/ORBInitializer_Registry.cpp82
1 files changed, 49 insertions, 33 deletions
diff --git a/TAO/tao/ORBInitializer_Registry.cpp b/TAO/tao/ORBInitializer_Registry.cpp
index 4a7aa25a200..286d3bd2362 100644
--- a/TAO/tao/ORBInitializer_Registry.cpp
+++ b/TAO/tao/ORBInitializer_Registry.cpp
@@ -7,6 +7,7 @@
#include "SystemException.h"
#include "ace/Static_Object_Lock.h"
+#include "ace/Recursive_Thread_Mutex.h"
ACE_RCSID (tao,
@@ -21,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 ());
@@ -80,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
@@ -94,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
@@ -107,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 */