OpenRTM  1.0.0
NamingManager.h
[詳解]
1 // -*- C++ -*-
19 #ifndef RTC_NAMINGMANAGER_H
20 #define RTC_NAMINGMANAGER_H
21 
22 #include <rtm/RTC.h>
23 
24 #include <coil/Task.h>
25 #include <coil/Mutex.h>
26 #include <coil/Guard.h>
27 #include <rtm/CorbaNaming.h>
28 #include <rtm/RTObject.h>
29 #include <rtm/SystemLogger.h>
30 #include <rtm/ManagerServant.h>
31 
32 namespace RTC
33 {
34  class Manager;
63  class NamingBase
64  {
65  typedef coil::Mutex Mutex;
66  typedef coil::Guard<Mutex> Guard;
67  public:
79  NamingBase() {};
80 
92  virtual ~NamingBase(void) {};
93 
112  virtual void bindObject(const char* name, const RTObject_impl* rtobj) = 0;
113 
132  virtual void bindObject(const char* name,
133  const RTM::ManagerServant* mgr) = 0;
134 
152  virtual void unbindObject(const char* name) = 0;
153 
169  virtual bool isAlive() = 0;
170  };
171 
172 
197  : public virtual NamingBase
198  {
199  public:
226  NamingOnCorba(CORBA::ORB_ptr orb, const char* names);
227 
239  virtual ~NamingOnCorba(void){};
240 
264  virtual void bindObject(const char* name, const RTObject_impl* rtobj);
282  virtual void bindObject(const char* name, const RTM::ManagerServant* mgr);
283 
303  virtual void unbindObject(const char* name);
304 
320  virtual bool isAlive();
321 
322  private:
323  Logger rtclog;
324  CorbaNaming m_cosnaming;
325  std::string m_endpoint;
326  bool m_replaceEndpoint;
327  std::map<std::string, RTObject_impl*> m_names;
328  };
329 
354  {
355  typedef coil::Mutex Mutex;
356  typedef coil::Guard<Mutex> Guard;
357  public:
377  NamingManager(Manager* manager);
378 
390  virtual ~NamingManager(void);
391 
415  void registerNameServer(const char* method, const char* name_server);
416 
439  void bindObject(const char* name, const RTObject_impl* rtobj);
440 
464  void bindObject(const char* name, const RTM::ManagerServant* mgr);
465 
482  void update();
483 
503  void unbindObject(const char* name);
504 
520  void unbindAll();
521 
541  std::vector<RTObject_impl*> getObjects();
542 
543  protected:
569  NamingBase* createNamingObj(const char* method, const char* name_server);
570 
590  void bindCompsTo(NamingBase* ns);
591 
613  void registerCompName(const char* name, const RTObject_impl* rtobj);
614 
637  void registerMgrName(const char* name, const RTM::ManagerServant* mgr);
638 
658  void unregisterCompName(const char* name);
659 
680  void unregisterMgrName(const char* name);
681 
701  class Names;
702  void retryConnection(Names* ns);
703 
704  protected:
705  // Name Servers' method/name and object
713  class Names
714  {
715  public:
716  Names(const char* meth, const char* name, NamingBase* naming)
717  : method(meth), nsname(name), ns(naming)
718  {
719  }
720 
722  {
723  delete ns;
724  }
725 
726  std::string method;
727  std::string nsname;
729  };
737  std::vector<Names*> m_names;
746 
747  // Components' name and object
755  struct Comps
756  {
757  Comps(const char* n, const RTObject_impl* obj)
758  : name(n), rtobj(obj)
759  {}
760  std::string name;
762  };
770  struct Mgr
771  {
772  Mgr(const char* n, const RTM::ManagerServant* obj)
773  : name(n), mgr(obj)
774  {}
775  std::string name;
777  };
785  std::vector<Comps*> m_compNames;
801  std::vector<Mgr*> m_mgrNames;
810 
819 
828  }; // class NamingManager
829 }; // namespace RTC
830 
831 #endif // RTC_NAMINGMANAGER_H
virtual ~NamingOnCorba(void)
デストラクタ
Definition: NamingManager.h:239
const RTM::ManagerServant * mgr
Definition: NamingManager.h:776
Comps(const char *n, const RTObject_impl *obj)
Definition: NamingManager.h:757
RTコンポーネント
std::string name
Definition: NamingManager.h:760
std::vector< Mgr * > m_mgrNames
ManagerServantリスト
Definition: NamingManager.h:801
virtual ~NamingManager(void)
デストラクタ
std::vector< Comps * > m_compNames
コンポーネントリスト
Definition: NamingManager.h:785
std::string name
Definition: NamingManager.h:775
Mutex クラス
Definition: Mutex.h:40
RT component logger class.
Manager * m_manager
マネージャオブジェクト
Definition: NamingManager.h:818
Mgr(const char *n, const RTM::ManagerServant *obj)
Definition: NamingManager.h:772
ManagerのCORBA化クラス
Definition: ManagerServant.h:63
Mutex m_mgrNamesMutex
ManagerServantリストのmutex.
Definition: NamingManager.h:809
virtual void bindObject(const char *name, const RTObject_impl *rtobj)=0
指定したオブジェクトをNamingServiceへバインドする純粋仮想関数 ...
RTコンポーネントクラス
Definition: RTObject.h:89
Manager クラス
Definition: Manager.h:80
void bindObject(const char *name, const RTObject_impl *rtobj)
指定したオブジェクトのNamingServiceへバインド
Mutex m_compNamesMutex
コンポーネントリストのmutex
Definition: NamingManager.h:793
void registerNameServer(const char *method, const char *name_server)
NameServer の登録
virtual bool isAlive()=0
ネームサーバの生存を確認する。
NamingOnCorba(CORBA::ORB_ptr orb, const char *names)
コンストラクタ
void unregisterMgrName(const char *name)
NameServer に登録するManagerServantの設定解除
std::string nsname
Definition: NamingManager.h:727
ManagerServant管理用構造体
Definition: NamingManager.h:770
void registerMgrName(const char *name, const RTM::ManagerServant *mgr)
NameServer に登録するManagerServantの設定
virtual bool isAlive()
ネームサーバの生存を確認する。
std::vector< RTObject_impl * > getObjects()
バインドされている全てのオブジェクトを取得
CORBA Naming Service ヘルパークラス
Definition: CorbaNaming.h:89
Names(const char *meth, const char *name, NamingBase *naming)
Definition: NamingManager.h:716
virtual void bindObject(const char *name, const RTObject_impl *rtobj)
指定した CORBA オブジェクトのNamingServiceへバインド
NamingService 管理用抽象クラス
Definition: NamingManager.h:63
Mutex m_namesMutex
NameServer リストのmutex.
Definition: NamingManager.h:745
CORBA naming service helper class.
Guard template class.
std::string method
Definition: NamingManager.h:726
RTComponent manager servant implementation class.
NamingBase * ns
Definition: NamingManager.h:728
NameServer 管理用構造体
Definition: NamingManager.h:713
void retryConnection(Names *ns)
NamingBase * createNamingObj(const char *method, const char *name_server)
NameServer 管理用オブジェクトの生成
NamingBase()
コンストラクタ
Definition: NamingManager.h:79
void registerCompName(const char *name, const RTObject_impl *rtobj)
NameServer に登録するコンポーネントの設定
Logger クラス
Definition: SystemLogger.h:99
const RTObject_impl * rtobj
Definition: NamingManager.h:761
void bindCompsTo(NamingBase *ns)
設定済みコンポーネントを NameServer に登録
void unregisterCompName(const char *name)
NameServer に登録するコンポーネントの設定解除
コンポーネント管理用構造体
Definition: NamingManager.h:755
virtual ~NamingBase(void)
デストラクタ
Definition: NamingManager.h:92
void update()
NamingServer の情報の更新
Logger rtclog
ロガーストリーム
Definition: NamingManager.h:827
~Names()
Definition: NamingManager.h:721
RTComponent header.
CORBA 用 NamingServer 管理クラス
Definition: NamingManager.h:196
Guard テンプレートクラス
Definition: Guard.h:41
NamingManager(Manager *manager)
コンストラクタ
std::vector< Names * > m_names
NameServer リスト
Definition: NamingManager.h:737
NamingServer 管理クラス
Definition: NamingManager.h:353
void unbindObject(const char *name)
指定したオブジェクトをNamingServiceからアンバインド
virtual void unbindObject(const char *name)
指定した CORBA オブジェクトをNamingServiceからアンバインド
RT component base class.
void unbindAll()
全てのオブジェクトをNamingServiceからアンバインド
virtual void unbindObject(const char *name)=0
指定したオブジェクトをNamingServiceからアンバインドするための 純粋仮想関...