OpenRTM-aist  1.2.1
PortAdmin.h
Go to the documentation of this file.
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-Component.
void finalizePorts()
Deactivate all Ports and unregister them.
RT component logger class.
PortBase * getPort(const char *port_name) const
Get pointer to the Port&#39;s servant.
PortService_ptr getPortRef(const char *port_name) const
Get the reference to Port object.
void activatePorts()
Activate all Port interfaces.
PortAdmin class.
Definition: PortAdmin.h:52
virtual ~PortAdmin(void)
Destructor.
Definition: PortAdmin.h:89
Port base class.
Definition: PortBase.h:135
Class for managing objects.
Definition: ObjectManager.h:51
void registerPort(PortBase &port)
Regsiter the Port.
PortProfileList getPortProfileList() const
Get PorProfileList.
Logger class.
Definition: SystemLogger.h:99
PortServiceList * getPortServiceList() const
Get PortServiceList.
void deactivatePorts()
Deactivate all Port interfaces.
bool removePort(PortBase &port)
Unregister the Port registration.
Object management class.
void deletePortByName(const char *port_name)
Unregister the Port&#39;s registration by its name.
bool addPort(PortBase &port)
Regsiter the Port.
void push_back(CorbaSequence &seq, SequenceElement elem)
Push the new element back to the CORBA sequence.
Definition: CORBA_SeqUtil.h:175
void deletePort(PortBase &port)
Unregister the Port registration.
const PortProfile & getPortProfile() const
Get the PortProfile of the Port.
PortAdmin(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa)
Constructor.