Go to the documentation of this file.00001 #ifndef ACSUTIL_ORB_HELPER_H
00002 #define ACSUTIL_ORB_HELPER_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef __cplusplus
00032 #error This is a C++ include file and cannot be used from plain C
00033 #endif
00034
00039 #include <lokiSingleton.h>
00040 #include <ace/Thread_Manager.h>
00041 #include <tao/ORB.h>
00042
00054 class ORBHelper
00055 {
00056 public:
00063 static CORBA::ORB_ptr
00064 getORB();
00065
00073 static bool
00074 setORB(CORBA::ORB_ptr);
00075
00079 static bool
00080 isORBSet();
00081
00082 protected:
00086 typedef Loki::SingletonHolder<ORBHelper,
00087 Loki::CreateUsingNew,
00088 Loki::PhoenixSingleton,
00089 Loki::SingleThreaded> ORBHelperSingleton;
00090
00097 ORBHelper();
00098
00103 ~ORBHelper();
00104
00106 private:
00111 static void
00112 runOrbThread(void *pThis);
00113
00117 static CORBA::ORB_ptr orb_mp;
00118
00122 ACE_Thread_Manager *threadManager_mp;
00123
00127 bool orbRunYet_m;
00128
00132 void operator=(const ORBHelper&);
00133
00137 ORBHelper(const ORBHelper&);
00138
00143 friend ORBHelper* Loki::CreateUsingNew<ORBHelper>::Create();
00144
00149 friend void Loki::CreateUsingNew<ORBHelper>::Destroy(ORBHelper*);
00150 };
00151
00152 #endif