#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"
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 | |
| 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 }
1.6.1