OpenRTM-aist 2.0.2
Loading...
Searching...
No Matches
NamingManager.h
Go to the documentation of this file.
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 <mutex>
26#include <rtm/CorbaNaming.h>
27#include <rtm/RTObject.h>
28#include <rtm/SystemLogger.h>
29#include <rtm/ManagerServant.h>
30
31#include <string>
32#include <vector>
33
34namespace RTC
35{
36 class Manager;
66 {
67 public:
79 NamingBase() = default;
80
92 virtual ~NamingBase() = default;
93
112 virtual void bindObject(const char* name, const PortBase* port) = 0;
113 virtual void bindObject(const char* name, const RTObject_impl* rtobj) = 0;
114
135 virtual void bindObject(const char* name,
136 const RTM::ManagerServant* mgr) = 0;
137
155 virtual void unbindObject(const char* name) = 0;
156
172 virtual bool isAlive() = 0;
190 virtual RTC::RTCList string_to_component(std::string name) = 0;
191 };
192
201 {
202 public:
203 NamingService(const char* meth, const char* name, NamingBase* naming)
204 : method(meth), nsname(name), ns(naming)
205 {
206 }
207
209 {
210 delete ns;
211 }
212
213 std::string method;
214 std::string nsname;
216 };
217
242 : public virtual NamingBase
243 {
244 public:
271 NamingOnCorba(CORBA::ORB_ptr orb, const char* names);
272
284 ~NamingOnCorba() override = default;
285
309 void bindObject(const char* name, const RTObject_impl* rtobj) override;
310 void bindObject(const char* name, const PortBase* port) override;
311
329 void bindObject(const char* name, const RTM::ManagerServant* mgr) override;
330
350 void unbindObject(const char* name) override;
351
367 bool isAlive() override;
388 void getComponentByName(CosNaming::NamingContext_ptr context, const std::string& name, RTC::RTCList& rtcs);
406 RTC::RTCList string_to_component(std::string name) override;
407 CorbaNaming& getCorbaNaming() { return m_cosnaming; }
408
409 private:
410 Logger rtclog;
411 CorbaNaming m_cosnaming;
412 std::string m_endpoint;
413 bool m_replaceEndpoint;
414 };
415
416
417
437 : public virtual NamingBase
438 {
439 public:
460 NamingOnManager(CORBA::ORB_ptr orb, Manager* mgr);
461
473 ~NamingOnManager() override = default;
474
498 void bindObject(const char* name, const RTObject_impl* rtobj) override;
499 void bindObject(const char* name, const PortBase* port) override;
500
518 void bindObject(const char* name, const RTM::ManagerServant* mgr) override;
519
539 void unbindObject(const char* name) override;
540
556 bool isAlive() override;
575 RTC::RTCList string_to_component(std::string name) override;
594 RTM::Manager_ptr getManager(const std::string& name);
595
596 private:
597 Logger rtclog;
598 CORBA::ORB_ptr m_orb;
599 Manager* m_mgr;
600 };
601
626 {
627 public:
647 explicit NamingManager(Manager* manager);
648
660 virtual ~NamingManager();
661
685 void registerNameServer(const char* method, const char* name_server);
686
709 void bindObject(const char* name, const PortBase* port);
710 void bindObject(const char* name, const RTObject_impl* rtobj);
711
735 void bindObject(const char* name, const RTM::ManagerServant* mgr);
736
753 void update();
754
774 void unbindObject(const char* name);
775
791 void unbindAll();
792
812 std::vector<RTObject_impl*> getObjects();
813 std::vector<NamingService*>& getNameServices() { return m_names; }
814
837 RTCList string_to_component(const std::string& name);
838
839 protected:
865 NamingBase* createNamingObj(const char* method, const char* name_server);
866
887
909 void registerCompName(const char* name, const RTObject_impl* rtobj);
910
932 void registerPortName(const char* name, const PortBase* port);
933
956 void registerMgrName(const char* name, const RTM::ManagerServant* mgr);
957
977 void unregisterCompName(const char* name);
978 void unregisterPortName(const char* name);
979
1000 void unregisterMgrName(const char* name);
1001
1022
1023
1024
1025 protected:
1026 // Name Servers' method/name and object
1034 std::vector<NamingService*> m_names;
1042 std::mutex m_namesMutex;
1043
1044 // Components' name and object
1052 struct Comps
1053 {
1054 Comps(const char* n, const RTObject_impl* obj)
1055 : name(n), rtobj(obj)
1056 {}
1057 std::string name;
1059 };
1067 struct Port
1068 {
1069 Port(const char* n, const PortBase* p)
1070 : name(n), port(p)
1071 {}
1072 std::string name;
1074 };
1082 struct Mgr
1083 {
1084 Mgr(const char* n, const RTM::ManagerServant* obj)
1085 : name(n), mgr(obj)
1086 {}
1087 std::string name;
1089 };
1097 std::vector<Comps*> m_compNames;
1113 std::vector<Port*> m_portNames;
1129 std::vector<Mgr*> m_mgrNames;
1138
1147
1156 }; // class NamingManager
1157} // namespace RTC
1158
1159#endif // RTC_NAMINGMANAGER_H
CORBA naming service helper class.
RTComponent manager servant implementation class.
RTComponent header.
RT component base class.
RT component logger class.
CORBA Naming Service helper class.
Definition CorbaNaming.h:86
Logger class.
Definition SystemLogger.h:101
Manager class.
Definition Manager.h:91
NamingService management abstract class.
Definition NamingManager.h:66
virtual void bindObject(const char *name, const PortBase *port)=0
Pure virtual function to bind the specified objects to the NamingService.
virtual void bindObject(const char *name, const RTM::ManagerServant *mgr)=0
Pure virtual function to bind the specified ManagerServants to NamingService.
virtual RTC::RTCList string_to_component(std::string name)=0
virtual void unbindObject(const char *name)=0
Pure virtual function to unbind the specified objects from NamingService.
virtual ~NamingBase()=default
Destructor.
NamingBase()=default
Constructor.
virtual void bindObject(const char *name, const RTObject_impl *rtobj)=0
virtual bool isAlive()=0
Check if the name service is alive.
NamingServer management class.
Definition NamingManager.h:626
void unregisterCompName(const char *name)
Unregister the components that will be registered to NameServer.
void update()
Update information of NamingServer.
std::vector< Comps * > m_compNames
Component list .
Definition NamingManager.h:1097
void bindObject(const char *name, const PortBase *port)
Bind the specified objects to NamingService.
NamingManager(Manager *manager)
Constructor.
void registerCompName(const char *name, const RTObject_impl *rtobj)
Configure the components that will be registered to NameServer.
void unbindObject(const char *name)
Unbind the specified objects from NamingService.
std::mutex m_compNamesMutex
Mutex of Component list .
Definition NamingManager.h:1105
NamingBase * createNamingObj(const char *method, const char *name_server)
Create objects for NameServer management.
std::mutex m_portNamesMutex
Mutex of Port list .
Definition NamingManager.h:1121
void registerMgrName(const char *name, const RTM::ManagerServant *mgr)
Configure the ManagerServants that will be registered to NameServer.
std::vector< RTObject_impl * > getObjects()
Get all bound objects.
std::vector< Port * > m_portNames
Component list .
Definition NamingManager.h:1113
Logger rtclog
Logger stream .
Definition NamingManager.h:1155
RTCList string_to_component(const std::string &name)
registerMgrName
void bindCompsTo(NamingBase *ns)
Register the configured component to NameServer.
virtual ~NamingManager()
Destructor.
void unregisterMgrName(const char *name)
Unregister the ManagerServants that will be registered to NameServer.
std::mutex m_namesMutex
Mutex of NameServer list .
Definition NamingManager.h:1042
void retryConnection(NamingService *ns)
Rebind the component to NameServer.
std::vector< NamingService * > m_names
NameServer list .
Definition NamingManager.h:1034
void registerNameServer(const char *method, const char *name_server)
Regster the NameServer.
Manager * m_manager
Manager object .
Definition NamingManager.h:1146
std::vector< NamingService * > & getNameServices()
Definition NamingManager.h:813
void registerPortName(const char *name, const PortBase *port)
Configure the components that will be registered to NameServer.
std::vector< Mgr * > m_mgrNames
ManagerServant list .
Definition NamingManager.h:1129
void unbindAll()
Unbind all objects from NamingService.
void bindObject(const char *name, const RTObject_impl *rtobj)
void unregisterPortName(const char *name)
void bindObject(const char *name, const RTM::ManagerServant *mgr)
Bind the specified ManagerServants to NamingService.
std::mutex m_mgrNamesMutex
Mutex of ManagerServant list .
Definition NamingManager.h:1137
NamingServer management class for CORBA.
Definition NamingManager.h:243
void unbindObject(const char *name) override
Unbind the specified CORBA objects from NamingService.
bool isAlive() override
Check if the name service is alive.
void bindObject(const char *name, const RTM::ManagerServant *mgr) override
Bind the specified ManagerServants to NamingService.
~NamingOnCorba() override=default
Destructor.
void getComponentByName(CosNaming::NamingContext_ptr context, const std::string &name, RTC::RTCList &rtcs)
void bindObject(const char *name, const PortBase *port) override
Pure virtual function to bind the specified objects to the NamingService.
NamingOnCorba(CORBA::ORB_ptr orb, const char *names)
Constructor.
CorbaNaming & getCorbaNaming()
Definition NamingManager.h:407
RTC::RTCList string_to_component(std::string name) override
void bindObject(const char *name, const RTObject_impl *rtobj) override
Bind the specified CORBA objects to NamingService.
Definition NamingManager.h:438
void bindObject(const char *name, const PortBase *port) override
Pure virtual function to bind the specified objects to the NamingService.
RTC::RTCList string_to_component(std::string name) override
bool isAlive() override
Check if the name service is alive.
void unbindObject(const char *name) override
Unbind the specified CORBA objects from NamingService.
~NamingOnManager() override=default
Destructor.
NamingOnManager(CORBA::ORB_ptr orb, Manager *mgr)
Constructor.
void bindObject(const char *name, const RTObject_impl *rtobj) override
Bind the specified CORBA objects to NamingService.
void bindObject(const char *name, const RTM::ManagerServant *mgr) override
Bind the specified ManagerServants to NamingService.
RTM::Manager_ptr getManager(const std::string &name)
Structure for NameServer management .
Definition NamingManager.h:201
NamingBase * ns
Definition NamingManager.h:215
NamingService(const char *meth, const char *name, NamingBase *naming)
Definition NamingManager.h:203
~NamingService()
Definition NamingManager.h:208
std::string nsname
Definition NamingManager.h:214
std::string method
Definition NamingManager.h:213
Port base class.
Definition PortBase.h:132
RT-Component class.
Definition RTObject.h:93
Manager CORBA class.
Definition ManagerServant.h:66
RT-Component.
Structure for component management .
Definition NamingManager.h:1053
std::string name
Definition NamingManager.h:1057
Comps(const char *n, const RTObject_impl *obj)
Definition NamingManager.h:1054
const RTObject_impl * rtobj
Definition NamingManager.h:1058
Structure for ManagerServant management .
Definition NamingManager.h:1083
const RTM::ManagerServant * mgr
Definition NamingManager.h:1088
std::string name
Definition NamingManager.h:1087
Mgr(const char *n, const RTM::ManagerServant *obj)
Definition NamingManager.h:1084
Structure for component management .
Definition NamingManager.h:1068
const PortBase * port
Definition NamingManager.h:1073
Port(const char *n, const PortBase *p)
Definition NamingManager.h:1069
std::string name
Definition NamingManager.h:1072