Choreonoid  1.5
CorbaUtil.h
Go to the documentation of this file.
1 
5 #ifndef CNOID_CORBAPLUGIN_CORBA_UTIL_H_INCLUDED
6 #define CNOID_CORBAPLUGIN_CORBA_UTIL_H_INCLUDED
7 
8 #include <vector>
9 #include <string>
10 #include <omniORB4/CORBA.h>
11 #include "exportdecl.h"
12 
13 namespace cnoid {
14 
15 CNOID_EXPORT void initializeCorbaUtil(bool activatePOAManager = false, int listeningPort = -1);
16 
20 CNOID_EXPORT void initializeCorbaUtil(CORBA::ORB_ptr orb, bool activatePOAManager = false);
21 
22 CNOID_EXPORT CORBA::ORB_ptr getORB();
23 
25 {
26 public:
28  NamingContextHelper(const std::string& host, int port);
29 
30  void setLocation(const std::string& host, int port);
31 
32  template <class T> typename T::_ptr_type findObject(const std::string& name, const std::string& kind = "") {
33  CORBA::Object_ptr obj = findObjectSub(name, kind);
34  if(CORBA::is_nil(obj)){
35  return T::_nil();
36  } else {
37  typename T::_ptr_type narrowed = T::_narrow(obj);
38  CORBA::release(obj);
39  return narrowed;
40  }
41  }
42 
43  CORBA::Object::_ptr_type findObject(const std::string& name, const std::string& kind = "") {
44  return findObjectSub(name, kind);
45  }
46 
47  const std::string& host() { return host_; }
48  int port() { return port_; }
49  const std::string& errorMessage();
50 
51  bool isAlive(bool doRescan = true);
52 
53  bool isObjectAlive(CORBA::Object_ptr obj);
54 
55  struct ObjectInfo
56  {
57  std::string id;
58  std::string kind;
59  bool isAlive;
60  };
61 
62  typedef std::vector<ObjectInfo> ObjectInfoList;
63 
64  ObjectInfoList getObjectList();
65 
66  bool bindObject(CORBA::Object_ptr object, const std::string& name);
67 
68  void unbind(const std::string& name);
69 
70 private:
71 
72  bool checkOrUpdateNamingContext();
73  CORBA::Object_ptr findObjectSub(const std::string& name, const std::string& kind);
74  void appendBindingList(CosNaming::BindingList_var& bList, ObjectInfoList& objects);
75 
76  CosNaming::NamingContext_var namingContext;
77  std::string errorMessage_;
78  std::string namingContextLocation;
79  std::string host_;
80  int port_;
81 };
82 
84 }
85 
86 
87 #endif
CNOID_EXPORT NamingContextHelper * getDefaultNamingContextHelper()
Definition: CorbaUtil.cpp:26
std::string id
Definition: CorbaUtil.h:57
bool isAlive
Definition: CorbaUtil.h:59
const std::string & host()
Definition: CorbaUtil.h:47
Definition: CorbaUtil.h:55
CNOID_EXPORT CORBA::ORB_ptr getORB()
Definition: CorbaUtil.cpp:20
T::_ptr_type findObject(const std::string &name, const std::string &kind="")
Definition: CorbaUtil.h:32
std::vector< ObjectInfo > ObjectInfoList
Definition: CorbaUtil.h:62
std::string kind
Definition: CorbaUtil.h:58
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
CORBA::Object::_ptr_type findObject(const std::string &name, const std::string &kind="")
Definition: CorbaUtil.h:43
int port()
Definition: CorbaUtil.h:48
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
Definition: CorbaUtil.h:24
CNOID_EXPORT void initializeCorbaUtil(bool activatePOAManager=false, int listeningPort=-1)
Definition: CorbaUtil.cpp:38