OpenRTM-aist  1.2.1
PortAdmin.h
[詳解]
1 // -*- C++ -*-
20 #ifndef RTC_PORTADMIN_H
21 #define RTC_PORTADMIN_H
22 
23 #include <rtm/idl/RTCSkel.h>
24 #include <rtm/PortBase.h>
25 #include <rtm/ObjectManager.h>
26 #include <rtm/SystemLogger.h>
27 
28 namespace RTC
29 {
52  class PortAdmin
53  {
54  public:
74  PortAdmin(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa);
75 
89  virtual ~PortAdmin(void){};
90 
111  PortServiceList* getPortServiceList() const;
112 
133  PortProfileList getPortProfileList() const;
134 
161  PortService_ptr getPortRef(const char* port_name) const;
162 
189  PortBase* getPort(const char* port_name) const;
190 
217  bool addPort(PortBase& port);
218 
245  bool addPort(PortService_ptr port);
246 
271  void registerPort(PortBase& port);
272 
297  void registerPort(PortService_ptr port);
298 
324  bool removePort(PortBase& port);
325 
351  bool removePort(PortService_ptr port);
352 
376  void deletePort(PortBase& port);
377 
401  void deletePort(PortService_ptr port);
402 
427  void deletePortByName(const char* port_name);
428 
447  void activatePorts();
448 
467  void deactivatePorts();
468 
486  void finalizePorts();
487 
488  private:
496  CORBA::ORB_var m_pORB;
497 
505  PortableServer::POA_var m_pPOA;
506 
514  PortServiceList m_portRefs;
515 
523  mutable Logger rtclog;
524 
532  template <class T>
533  class comp_op
534  {
535  public:
536  comp_op(const char* _name)
537  : m_name(_name)
538  {
539  }
540  comp_op(T* obj)
541  : m_name((const char*)(obj->getProfile().name))
542  {
543  }
544  bool operator()(T* obj)
545  {
546  std::string name((const char*)obj->getProfile().name);
547  return m_name == name;
548  }
549  private:
550  std::string m_name;
551  };
552 
560  class port_prof_collect
561  {
562  public:
563  port_prof_collect(PortProfileList& p) : m_p(p) {}
564  void operator()(const PortBase* port)
565  {
567  }
568  private:
569  PortProfileList& m_p;
570  };
571 
579  class port_prof_collect2
580  {
581  public:
582  port_prof_collect2(PortProfileList& p) : m_p(p) {}
583  void operator()(const PortService_ptr port)
584  {
585  PortProfile* pp(port->get_port_profile());
586  CORBA_SeqUtil::push_back(m_p, *(pp));
587  delete pp;
588  }
589  private:
590  PortProfileList& m_p;
591  };
592 
593  struct find_port_name;
594  struct find_port;
595  struct del_port;
596 
597  // サーバントを直接格納するオブジェクトマネージャ
599 
600  };
601 }; // namespace RTC
602 #endif // RTC_PORTADMIN_H
RTC&#39;s Port base class.
RTコンポーネント
void finalizePorts()
全ての Port をdeactivateし登録を削除する
RT component logger class.
PortBase * getPort(const char *port_name) const
Port のサーバントのポインタの取得
PortService_ptr getPortRef(const char *port_name) const
Port のオブジェクト参照の取得
void activatePorts()
全ての Port のインターフェースを activates する
PortAdmin クラス
Definition: PortAdmin.h:52
virtual ~PortAdmin(void)
デストラクタ
Definition: PortAdmin.h:89
Port の基底クラス
Definition: PortBase.h:135
オブジェクト管理用クラス
Definition: ObjectManager.h:51
void registerPort(PortBase &port)
Port を登録する
PortProfileList getPortProfileList() const
PorProfile リストの取得
Logger クラス
Definition: SystemLogger.h:99
PortServiceList * getPortServiceList() const
Port リストの取得
void deactivatePorts()
全ての Port のインターフェースを deactivates する
bool removePort(PortBase &port)
Port の登録を解除する
Object management class.
void deletePortByName(const char *port_name)
名称指定によりPort の登録を解除する
bool addPort(PortBase &port)
Port を登録する
void push_back(CorbaSequence &seq, SequenceElement elem)
CORBA sequence の最後に要素を追加する
Definition: CORBA_SeqUtil.h:175
void deletePort(PortBase &port)
Port の登録を解除する
const PortProfile & getPortProfile() const
PortProfile を取得する。
PortAdmin(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa)
コンストラクタ