OpenRTM-aist 2.0.2
Loading...
Searching...
No Matches
ManagerServant.h
Go to the documentation of this file.
1// -*- C++ -*-
20#ifndef RTM_MANAGERSERVANT_H
21#define RTM_MANAGERSERVANT_H
22
23#include <mutex>
24#include <rtm/idl/ManagerSkel.h>
25#include <rtm/Manager.h>
26#include <rtm/SystemLogger.h>
27
28#include <iostream>
29
45namespace RTM
46{
64 : public virtual POA_RTM::Manager,
65 public virtual PortableServer::RefCountServantBase
66 {
67 public:
81 // standard constructor
83
95 ~ManagerServant() override;
96
121 RTC::ReturnCode_t load_module(const char* pathname, const char* initfunc) override;
122
142 RTC::ReturnCode_t unload_module(const char* pathname) override;
143
161 RTM::ModuleProfileList* get_loadable_modules() override;
162
180 RTM::ModuleProfileList* get_loaded_modules() override;
181
182 // component 関連
202 RTM::ModuleProfileList* get_factory_profiles() override;
203
222 RTC::RTObject_ptr create_component(const char* module_name) override;
223
242 RTC::ReturnCode_t delete_component(const char* instance_name) override;
243
261 RTC::RTCList* get_components() override;
262
282 RTC::ComponentProfileList* get_component_profiles() override;
283
284 // manager 基本
302 RTM::ManagerProfile* get_profile() override;
303
321 RTM::NVList* get_configuration() override;
322
344 RTC::ReturnCode_t set_configuration(const char* name, const char* value) override;
345
365 ::CORBA::Boolean is_master() override;
366
388 RTM::ManagerList* get_master_managers() override;
389
413 RTC::ReturnCode_t add_master_manager(RTM::Manager_ptr mgr) override;
414
434 RTC::ReturnCode_t remove_master_manager(RTM::Manager_ptr mgr) override;
435
457 RTM::ManagerList* get_slave_managers() override;
458
478 RTC::ReturnCode_t add_slave_manager(RTM::Manager_ptr mgr) override;
479
499 RTC::ReturnCode_t remove_slave_manager(RTM::Manager_ptr mgr) override;
500
510 RTC::ReturnCode_t fork() override;
520 RTC::ReturnCode_t shutdown() override;
530 RTC::ReturnCode_t restart() override;
531
547 RTC::RTCList* get_components_by_name(const char* name) override;
548
558 CORBA::Object_ptr get_service(const char* name) override;
559
569 RTM::Manager_ptr getObjRef() const;
570
581
591 RTM::Manager_ptr findManager(const std::string& host_port);
592
614 RTM::Manager_ptr findManagerByName(const std::string& mgr_name);
615
644 RTM::Manager_ptr findManagerFromList(const std::string& name,
645 RTM::ManagerList& mlist);
646
669 RTC::RTObject_ptr
670 createComponentByManagerName(std::string& create_arg, std::string& mgrstr);
671
672 /*
673 * @if jp
674 * @brief 指定アドレスのマネージャでRTCを起動する
675 *
676 * comp&manager_address=localhost:2810 のようにRTC名
677 * &manager_address=マネージャのホスト名、ポート番号を指定する
678 *
679 * @param module_name 起動するRTC、マネージャのホストアドレス
680 * @return 生成されたRTCのオブジェクト参照
681 *
682 * @else
683 * @brief Launch a RTC on the specified IP/Port address manager
684 *
685 * @param module_name Given parameter to create RTC
686 * @return created RTObject object reference
687 *
688 * @endif
689 */
690 RTC::RTObject_ptr
691 createComponentByAddress(std::string& create_arg, std::string& mgrstr);
692
693 /*
694 * @if jp
695 * @brief マスターマネージャの有無を確認してリストを更新する
696 *
697 *
698 *
699 * @else
700 * @brief
701 *
702 *
703 * @endif
704 */
706 /*
707 * @if jp
708 * @brief create引数から指定されたキーの値を返す
709 *
710 * create引数から指定されたキーを値を返すとともに、そのキーと値を削除した引
711 * 数を返す。
712 * module_name: module_name?param1=value1&param2=value2&param3...
713 * param_name: param2
714 * の場合
715 * 返り値: value2
716 * module_name: module_name?param1=value1&param3...
717 * となる。
718 *
719 * @else @brief returns value of specified param_name from create arg
720 *
721 * This function returns the value of specified param_name from
722 * create argument, and delete param_name=value from the create
723 * arg string. If the arguments are
724 * module_name: module_name?param1=value1&param2=value2&param3...
725 * param_name: param2
726 * this function returns
727 * ret value: value2
728 * module_name: module_name?param1=value1&param3...
729 *
730 * @endif
731 */
732 std::string getParameterByModulename(const std::string& param_name, std::string &module_name);
733 static bool isProcessIDManager(const std::string& mgrname);
734
735 private:
743 ::RTC::Logger rtclog{"ManagerServant"};
744
753
761 ::RTM::Manager_var m_objref{RTM::Manager::_nil()};
762
770 ::RTM::ManagerList m_masters;
771
779 ::std::mutex m_masterMutex;
780
788 ::RTM::ManagerList m_slaves;
789
797 ::std::mutex m_slaveMutex;
798
806 CORBA::Boolean m_isMaster{false};
807
815 class is_equiv
816 {
817 RTM::Manager_var m_mgr;
818 public:
819
820 is_equiv(RTM::Manager_ptr mgr)
821 : m_mgr(RTM::Manager::_duplicate(mgr)) {}
822#ifdef ORB_IS_ORBEXPRESS
823 bool operator()(RTM::Manager_var mgr)
824 {
825 return m_mgr->_is_equivalent(mgr.in());
826 }
827#else
828 bool operator()(RTM::Manager_ptr mgr)
829 {
830 return m_mgr->_is_equivalent(mgr);
831 }
832#endif
833 };
834
835
836 };
837
838
840 {
841 public:
842 CompParam(std::string module_name);
844 static const unsigned int prof_list_size = 6;
845 static const char* prof_list[prof_list_size];
846 std::string vendor();
847 std::string category();
848 std::string impl_id();
849 std::string language();
850 std::string version();
851 private:
852 std::string m_type;
853 std::string m_vendor;
854 std::string m_category;
855 std::string m_impl_id;
856 std::string m_language;
857 std::string m_version;
858
859 };
860
861} // namespace RTM
862#endif // RTM_MANAGERSERVANT_H
-*- C++ -*-
RT component logger class.
Logger class.
Definition SystemLogger.h:101
Manager class.
Definition Manager.h:91
static Manager & instance()
Get instance of the manager.
Definition ManagerServant.h:840
std::string impl_id()
static const unsigned int prof_list_size
Definition ManagerServant.h:844
std::string vendor()
std::string category()
static const char * prof_list[prof_list_size]
Definition ManagerServant.h:845
CompParam(std::string module_name)
std::string language()
std::string version()
Manager CORBA class.
Definition ManagerServant.h:66
RTC::ReturnCode_t remove_master_manager(RTM::Manager_ptr mgr) override
Removing a master manager.
RTC::ReturnCode_t remove_slave_manager(RTM::Manager_ptr mgr) override
Removing a slave manager.
RTM::ManagerList * get_slave_managers() override
Getting slave managers.
RTM::Manager_ptr findManager(const std::string &host_port)
Find the reference of Manager.
RTC::RTObject_ptr create_component(const char *module_name) override
Creating an RT-Component.
RTM::ModuleProfileList * get_loaded_modules() override
Getting loaded module profiles.
RTC::ReturnCode_t add_master_manager(RTM::Manager_ptr mgr) override
Getting a master manager.
RTM::ModuleProfileList * get_factory_profiles() override
Getting component factory profiles.
~ManagerServant() override
Virtual destructor.
RTM::Manager_ptr getObjRef() const
Get the reference of Manager.
std::string getParameterByModulename(const std::string &param_name, std::string &module_name)
RTM::ManagerList * get_master_managers() override
Getting master managers.
::CORBA::Boolean is_master() override
Whether this manager is master or not.
RTC::RTCList * get_components_by_name(const char *name) override
RTC::ComponentProfileList * get_component_profiles() override
Getting RT-Component's profile list running on this manager.
RTC::ReturnCode_t restart() override
This method restarts RTC.
RTC::ReturnCode_t set_configuration(const char *name, const char *value) override
Setting manager's configuration.
RTC::ReturnCode_t shutdown() override
This method shutdowns RTC.
RTC::RTObject_ptr createComponentByAddress(std::string &create_arg, std::string &mgrstr)
bool createINSManager()
Generate INSManager.
RTC::ReturnCode_t load_module(const char *pathname, const char *initfunc) override
Loading a module.
CORBA::Object_ptr get_service(const char *name) override
Get the reference of RTC.
RTM::ManagerProfile * get_profile() override
Getting this manager's profile.
RTC::RTObject_ptr createComponentByManagerName(std::string &create_arg, std::string &mgrstr)
Launch RTC on specified manager.
RTC::ReturnCode_t delete_component(const char *instance_name) override
Deleting an RT-Component.
ManagerServant()
Constructor.
RTM::ModuleProfileList * get_loadable_modules() override
Getting loadable module profiles.
RTM::Manager_ptr findManagerByName(const std::string &mgr_name)
Obtain Manager's reference by name.
RTM::Manager_ptr findManagerFromList(const std::string &name, RTM::ManagerList &mlist)
Obtain Manager's reference by name.
static bool isProcessIDManager(const std::string &mgrname)
RTC::ReturnCode_t unload_module(const char *pathname) override
Unloading a module.
RTC::RTCList * get_components() override
Getting RT-Component list running on this manager.
RTC::ReturnCode_t add_slave_manager(RTM::Manager_ptr mgr) override
Getting a slave manager.
RTM::NVList * get_configuration() override
Getting this manager's configuration.
RTC::ReturnCode_t fork() override
The copy of the process is generated.
RT-Middleware.
Definition FactoryInit.h:22