OpenRTM-aist 2.0.2
読み取り中…
検索中…
一致する文字列を見つけられません
ManagerServant.h
[詳解]
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 クラス
Definition SystemLogger.h:101
Manager クラス
Definition Manager.h:91
static Manager & instance()
マネージャのインスタンスの取得
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化クラス
Definition ManagerServant.h:66
RTC::ReturnCode_t remove_master_manager(RTM::Manager_ptr mgr) override
マスターマネージャの削除
RTC::ReturnCode_t remove_slave_manager(RTM::Manager_ptr mgr) override
スレーブマネージャの削除
RTM::ManagerList * get_slave_managers() override
スレーブマネージャの取得
RTM::Manager_ptr findManager(const std::string &host_port)
Managerのリファレンスを検索する。
RTC::RTObject_ptr create_component(const char *module_name) override
コンポーネントを生成する
RTM::ModuleProfileList * get_loaded_modules() override
ロード済みのモジュールのプロファイルを取得する
RTC::ReturnCode_t add_master_manager(RTM::Manager_ptr mgr) override
マスターマネージャの追加
RTM::ModuleProfileList * get_factory_profiles() override
コンポーネントファクトリのプロファイルを取得する
~ManagerServant() override
仮想デストラクタ
RTM::Manager_ptr getObjRef() const
Managerのリファレンスを取得する。
std::string getParameterByModulename(const std::string &param_name, std::string &module_name)
RTM::ManagerList * get_master_managers() override
マスターマネージャの取得
::CORBA::Boolean is_master() override
マネージャがマスターかどうか
RTC::RTCList * get_components_by_name(const char *name) override
指定名のRTCオブジェクトリファレンスを取得
RTC::ComponentProfileList * get_component_profiles() override
起動中のコンポーネントプロファイルのリストを取得する
RTC::ReturnCode_t restart() override
再起動する。
RTC::ReturnCode_t set_configuration(const char *name, const char *value) override
マネージャのコンフィギュレーションを設定する
RTC::ReturnCode_t shutdown() override
shutdownする
RTC::RTObject_ptr createComponentByAddress(std::string &create_arg, std::string &mgrstr)
bool createINSManager()
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
RTCのリファレンスを取得する。
RTM::ManagerProfile * get_profile() override
マネージャのプロファイルを取得する
RTC::RTObject_ptr createComponentByManagerName(std::string &create_arg, std::string &mgrstr)
指定のマネージャでRTCを起動する
RTC::ReturnCode_t delete_component(const char *instance_name) override
コンポーネントを削除する
ManagerServant()
コンストラクタ
RTM::ModuleProfileList * get_loadable_modules() override
ロード可能なモジュールのプロファイルを取得する
RTM::Manager_ptr findManagerByName(const std::string &mgr_name)
指定名のマネージャを取得
RTM::Manager_ptr findManagerFromList(const std::string &name, RTM::ManagerList &mlist)
マネージャのリストから指定名を持つマネージャを取得
static bool isProcessIDManager(const std::string &mgrname)
RTC::ReturnCode_t unload_module(const char *pathname) override
モジュールをアンロードする
RTC::RTCList * get_components() override
起動中のコンポーネントのリストを取得する
RTC::ReturnCode_t add_slave_manager(RTM::Manager_ptr mgr) override
スレーブマネージャの追加
RTM::NVList * get_configuration() override
マネージャのコンフィギュレーションを取得する
RTC::ReturnCode_t fork() override
プロセスのコピーを生成する
RT-Middleware
Definition FactoryInit.h:22