00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef OMNIEVENTS__ORB_H
00025 #define OMNIEVENTS__ORB_H
00026
00027 #ifdef HAVE_CONFIG_H
00028 # include "config.h"
00029 #endif
00030
00031 #include <list>
00032 #include <omniORB4/CORBA.h>
00033
00034 #ifdef HAVE_STD_STL
00035 using namespace std;
00036 #endif
00037
00038 namespace OmniEvents {
00039
00041 class Orb
00042 {
00043 private:
00044 static Orb _inst;
00045 list<CORBA::Request_var> _orphans;
00046
00047 public:
00048 inline static Orb& inst()
00049 {
00050 return _inst;
00051 }
00052
00053 CORBA::ORB_var _orb;
00054 PortableServer::POA_var _RootPOA;
00055 PortableServer::POA_var _omniINSPOA;
00056 PortableServer::Current_ptr _POACurrent;
00057 CosNaming::NamingContext_var _NameService;
00058
00059 void init(int argc, char** argv);
00060
00064 void run();
00065
00071 void orphanRequest(CORBA::Request* req);
00072 };
00073
00075 template<class T>
00076 typename T::_ptr_type string_to_(const char* oidStr)
00077 {
00078 CORBA::Object_var obj =Orb::inst()._orb->string_to_object(oidStr);
00079 if(CORBA::is_nil(obj.in()))
00080 throw CORBA::BAD_PARAM();
00081
00082 typename T::_var_type result =T::_narrow(obj);
00083 if(CORBA::is_nil(result.in()))
00084 throw CORBA::BAD_PARAM();
00085
00086 return result._retn();
00087 }
00088
00089 };
00090
00091 #endif // OMNIEVENTS__ORB_H