ORBInitializer_Registry.cpp File Reference

#include "tao/ORBInitializer_Registry.h"
#include "tao/ORBInitializer_Registry_Adapter.h"
#include "tao/PortableInterceptorC.h"
#include "tao/ORB.h"
#include "tao/ORB_Constants.h"
#include "tao/TAO_Singleton_Manager.h"
#include "tao/SystemException.h"
#include "ace/Service_Config.h"
#include "ace/Dynamic_Service.h"
#include "ace/Static_Object_Lock.h"
#include "ace/Recursive_Thread_Mutex.h"
#include "ace/Log_Msg.h"
Include dependency graph for ORBInitializer_Registry.cpp:

Go to the source code of this file.

Functions

 ACE_RCSID (tao, ORBInitializer_Registry,"$Id: ORBInitializer_Registry.cpp 82353 2008-07-22 10:12:29Z johnnyw $") 1 namespace PortableInterceptor

Function Documentation

ACE_RCSID ( tao  ,
ORBInitializer_Registry  ,
"$Id: ORBInitializer_Registry.cpp 82353 2008-07-22 10:12:29Z johnnyw $"   
)

Definition at line 15 of file ORBInitializer_Registry.cpp.

00017                : ORBInitializer_Registry.cpp 82353 2008-07-22 10:12:29Z johnnyw $")
00018 
00019 
00020 // ****************************************************************
00021 
00022 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00023 
00024 namespace PortableInterceptor
00025 {
00026   void
00027   register_orb_initializer (ORBInitializer_ptr init)
00028   {
00029     {
00030       // Using ACE_Static_Object_Lock::instance() precludes
00031       // register_orb_initializer() from being called within a static
00032       // object CTOR.
00033       ACE_MT (ACE_GUARD (TAO_SYNCH_RECURSIVE_MUTEX,
00034                          guard,
00035                          *ACE_Static_Object_Lock::instance ()));
00036 
00037       // Make sure TAO's singleton manager is initialized.
00038       if (TAO_Singleton_Manager::instance ()->init () == -1)
00039         {
00040           ACE_ERROR ((LM_ERROR,
00041                       ACE_TEXT ("TAO (%P|%t) - register_orb_initializer: ")
00042                       ACE_TEXT ("Unable to pre-initialize TAO\n")));
00043         }
00044     }
00045 
00046     // If not, look it up.
00047     TAO::ORBInitializer_Registry_Adapter *orbinitializer_registry_ =
00048       ACE_Dynamic_Service<TAO::ORBInitializer_Registry_Adapter>::instance
00049       ("ORBInitializer_Registry", true); // only look in the local repo
00050 
00051 #if !defined (TAO_AS_STATIC_LIBS)
00052     if (orbinitializer_registry_ == 0)
00053       {
00054         ACE_Service_Config::process_directive (
00055           ACE_DYNAMIC_SERVICE_DIRECTIVE("ORBInitializer_Registry",
00056                                         "TAO_PI",
00057                                         "_make_ORBInitializer_Registry",
00058                                         ""));
00059         orbinitializer_registry_ =
00060           ACE_Dynamic_Service<TAO::ORBInitializer_Registry_Adapter>::instance
00061             ("ORBInitializer_Registry");
00062       }
00063 #endif /* !TAO_AS_STATIC_LIBS */
00064 
00065     if (orbinitializer_registry_ != 0)
00066       {
00067         orbinitializer_registry_->register_orb_initializer (init);
00068       }
00069     else
00070       {
00071         ACE_ERROR ((LM_ERROR,
00072                     ACE_TEXT ("TAO (%P|%t) %p\n"),
00073                     ACE_TEXT ("ERROR: ORBInitializer Registry unable to find the ")
00074                     ACE_TEXT ("ORBInitializer Registry instance")));
00075 
00076         throw ::CORBA::INTERNAL ();
00077       }
00078   }
00079 }

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Sat Nov 21 23:27:21 2009 for TAO by  doxygen 1.6.1