OpenRTM-aist  1.2.1
ManagerServant.h
Go to the documentation of this file.
1 // -*- C++ -*-
20 #ifndef RTM_MANAGERSERVANT_H
21 #define RTM_MANAGERSERVANT_H
22 
23 #include <iostream>
24 #include <coil/Mutex.h>
25 #include <coil/Guard.h>
26 #include <rtm/idl/ManagerSkel.h>
27 #include <rtm/Manager.h>
28 #include <rtm/SystemLogger.h>
29 
45 namespace RTM
46 {
64  : public virtual POA_RTM::Manager,
65  public virtual PortableServer::RefCountServantBase
66  {
67  public:
81  // standard constructor
83 
95  virtual ~ManagerServant(void);
96 
121  RTC::ReturnCode_t load_module(const char* pathname, const char* initfunc);
122 
142  RTC::ReturnCode_t unload_module(const char* pathname);
143 
161  RTM::ModuleProfileList* get_loadable_modules();
162 
180  RTM::ModuleProfileList* get_loaded_modules();
181 
182  // component 関連
202  RTM::ModuleProfileList* get_factory_profiles();
203 
222  RTC::RTObject_ptr create_component(const char* module_name);
223 
242  RTC::ReturnCode_t delete_component(const char* instance_name);
243 
261  RTC::RTCList* get_components();
262 
282  RTC::ComponentProfileList* get_component_profiles();
283 
284  // manager 基本
302  RTM::ManagerProfile* get_profile();
303 
321  RTM::NVList* get_configuration();
322 
344  RTC::ReturnCode_t set_configuration(const char* name, const char* value);
345 
365  ::CORBA::Boolean is_master();
366 
388  RTM::ManagerList* get_master_managers();
389 
413  RTC::ReturnCode_t add_master_manager(RTM::Manager_ptr mgr);
414 
434  RTC::ReturnCode_t remove_master_manager(RTM::Manager_ptr mgr);
435 
457  RTM::ManagerList* get_slave_managers();
458 
478  RTC::ReturnCode_t add_slave_manager(RTM::Manager_ptr mgr);
479 
499  RTC::ReturnCode_t remove_slave_manager(RTM::Manager_ptr mgr);
500 
510  RTC::ReturnCode_t fork();
520  RTC::ReturnCode_t shutdown();
530  RTC::ReturnCode_t restart();
531 
547  RTC::RTCList* get_components_by_name(const char* name);
548 
558  CORBA::Object_ptr get_service(const char* name);
559 
569  RTM::Manager_ptr getObjRef() const;
570 
580  bool createINSManager();
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(const std::string module_name);
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(const std::string module_name);
692  /*
693  * @if jp
694  * @brief マスターマネージャの有無を確認してリストを更新する
695  *
696  *
697  *
698  * @else
699  * @brief
700  *
701  *
702  * @endif
703  */
704  void updateMasterManager();
705  std::string getParameterByModulename(const std::string param_name, std::string &module_name);
706  bool isProcessIDManager(std::string mgrname);
707 
708  private:
717  ::RTC::Logger rtclog;
718 
726  ::RTC::Manager& m_mgr;
727 
735  ::RTM::Manager_var m_objref;
736 
744  ::RTM::ManagerList m_masters;
745 
753  ::coil::Mutex m_masterMutex;
754 
762  ::RTM::ManagerList m_slaves;
763 
771  ::coil::Mutex m_slaveMutex;
772 
780  CORBA::Boolean m_isMaster;
781 
789  class is_equiv
790  {
791  RTM::Manager_var m_mgr;
792  public:
793 
794  is_equiv(RTM::Manager_ptr mgr)
795  : m_mgr(RTM::Manager::_duplicate(mgr)) {}
796  bool operator()(RTM::Manager_ptr mgr)
797  {
798  return m_mgr->_is_equivalent(mgr);
799  }
800  };
801 
802 
803 
804  };
805 
806  class CompParam
807  {
808  public:
809  CompParam(std::string module_name);
810  static const unsigned int prof_list_size = 6;
811  static const char* prof_list[prof_list_size];
812  std::string vendor();
813  std::string category();
814  std::string impl_id();
815  std::string language();
816  std::string version();
817  private:
818  std::string m_type;
819  std::string m_vendor;
820  std::string m_category;
821  std::string m_impl_id;
822  std::string m_language;
823  std::string m_version;
824 
825 
826  };
827 }; // namespace RTM
828 #endif // RTM_MANAGERSERVANT_H
RTC::RTCList * get_components()
Getting RT-Component list running on this manager.
bool createINSManager()
Generate INSManager.
Mutex class.
Definition: Mutex.h:40
RT component logger class.
Manager CORBA class.
Definition: ManagerServant.h:63
virtual ~ManagerServant(void)
Virtual destructor.
CORBA::Object_ptr get_service(const char *name)
Get the reference of RTC.
RTC::ReturnCode_t shutdown()
This method shutdowns RTC.
std::string getParameterByModulename(const std::string param_name, std::string &module_name)
Manager class.
Definition: Manager.h:81
RTM::ManagerList * get_master_managers()
Getting master managers.
RTC::RTObject_ptr create_component(const char *module_name)
Creating an RT-Component.
RTC::RTObject_ptr createComponentByManagerName(const std::string module_name)
Launch RTC on specified manager.
RTM::Manager_ptr findManagerByName(const std::string mgr_name)
Obtain Manager&#39;s reference by name.
-*- C++ -*-
Definition: ManagerServant.h:806
RTC::ReturnCode_t remove_slave_manager(RTM::Manager_ptr mgr)
Removing a slave manager.
RTC::ReturnCode_t set_configuration(const char *name, const char *value)
Setting manager&#39;s configuration.
RTM::ModuleProfileList * get_loadable_modules()
Getting loadable module profiles.
RTC::ReturnCode_t delete_component(const char *instance_name)
Deleting an RT-Component.
RTC::ReturnCode_t load_module(const char *pathname, const char *initfunc)
Loading a module.
RTC::ReturnCode_t remove_master_manager(RTM::Manager_ptr mgr)
Removing a master manager.
Guard template class.
RTC::RTObject_ptr createComponentByAddress(const std::string module_name)
::CORBA::Boolean is_master()
Whether this manager is master or not.
RTC::ReturnCode_t restart()
This method restarts RTC.
RTM::Manager_ptr findManager(const std::string &host_port)
Find the reference of Manager.
Logger class.
Definition: SystemLogger.h:99
RTM::ModuleProfileList * get_factory_profiles()
Getting component factory profiles.
RTC::ReturnCode_t unload_module(const char *pathname)
Unloading a module.
RTC::ReturnCode_t add_master_manager(RTM::Manager_ptr mgr)
Getting a master manager.
bool isProcessIDManager(std::string mgrname)
RTM::ManagerList * get_slave_managers()
Getting slave managers.
RTM::Manager_ptr getObjRef() const
Get the reference of Manager.
RTM::Manager_ptr findManagerFromList(const std::string name, RTM::ManagerList &mlist)
Obtain Manager&#39;s reference by name.
ManagerServant()
Constructor.
RTC::RTCList * get_components_by_name(const char *name)
RTM::ManagerProfile * get_profile()
Getting this manager&#39;s profile.
RTC::ComponentProfileList * get_component_profiles()
Getting RT-Component&#39;s profile list running on this manager.
RTC::ReturnCode_t add_slave_manager(RTM::Manager_ptr mgr)
Getting a slave manager.
RTM::NVList * get_configuration()
Getting this manager&#39;s configuration.
RT-Middleware.
Definition: ListenerHolder.h:28
RTM::ModuleProfileList * get_loaded_modules()
Getting loaded module profiles.
RTC::ReturnCode_t fork()
The copy of the process is generated.