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