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 void
00074 setORB(CORBA::ORB_ptr);
00075
00076 protected:
00080 typedef Loki::SingletonHolder<ORBHelper,
00081 Loki::CreateUsingNew,
00082 Loki::PhoenixSingleton,
00083 Loki::SingleThreaded> ORBHelperSingleton;
00084
00091 ORBHelper();
00092
00097 ~ORBHelper();
00098
00100 private:
00105 static void
00106 runOrbThread(void *pThis);
00107
00111 static CORBA::ORB_ptr orb_mp;
00112
00116 ACE_Thread_Manager *threadManager_mp;
00117
00121 bool orbRunYet_m;
00122
00126 void operator=(const ORBHelper&);
00127
00131 ORBHelper(const ORBHelper&);
00132
00137 friend ORBHelper* Loki::CreateUsingNew<ORBHelper>::Create();
00138
00143 friend void Loki::CreateUsingNew<ORBHelper>::Destroy(ORBHelper*);
00144 };
00145
00146 #endif