26#include <tao/Strategies/advanced_resource.h>
27#include <tao/IORTable/IORTable.h>
36#ifdef ORB_IS_ORBEXPRESS
37#include <RTPortableServer.h>
40#include <coil/Timer.h>
41#include <coil/Signal.h>
374 using TaskId = coil::Timer<coil::PeriodicFunction>::TaskId;
405 std::chrono::nanoseconds period);
451 void invoke(std::function<
void(
void)> fn,
452 std::chrono::nanoseconds delay
453 = std::chrono::seconds::zero());
490 ReturnCode_t
load(
const std::string& fname,
const std::string& initfunc);
947 bool autoclean =
true);
953 bool autoclean =
true);
959 bool autoclean =
true);
965 bool autoclean =
true);
971 bool autoclean =
true);
1073#ifdef ORB_IS_OMNIORB
1074 PortableServer::POA_ptr theShortCutPOA();
1113#ifdef ORB_IS_OMNIORB
1114 PortableServer::POA_ptr getShortCutPOA();
1585 coil::Properties& comp_id,
1586 coil::Properties& comp_conf);
1629 coil::Properties& ec_conf);
1957 coil::Properties& prop);
1976 bool& ip, std::vector<int>& ip_list);
2032#ifdef ORB_IS_OMNIORB
2033 PortableServer::POA_var m_pShortCutPOA;
2225 : m_vendor(
""), m_category(
""), m_impleid(imple_id), m_version(
""), m_language(
"")
2229 : m_vendor(prop[
"vendor"]),
2230 m_category(prop[
"category"]),
2231 m_impleid(prop[
"implementation_id"]),
2232 m_version(prop[
"version"]),
2233 m_language(prop[
"language"])
2237 : m_vendor(factory->profile()[
"vendor"]),
2238 m_category(factory->profile()[
"category"]),
2239 m_impleid(factory->profile()[
"implementation_id"]),
2240 m_version(factory->profile()[
"version"]),
2241 m_language(factory->profile()[
"language"])
2248 if (m_impleid.empty())
return false;
2250 const coil::Properties& prop(factory->
profile());
2252 if (m_impleid != prop[
"implementation_id"])
2254 if (!m_vendor.empty() && m_vendor != prop[
"vendor"])
2256 if (!m_category.empty() && m_category != prop[
"category"])
2258 if (!m_version.empty() && m_version != prop[
"version"])
2260 if (!m_language.empty() && m_language != prop[
"language"])
2267 std::string m_vendor;
2268 std::string m_category;
2269 std::string m_impleid;
2270 std::string m_version;
2271 std::string m_language;
2276 coil::Properties& m_prop;
2284 if (m_prop[
"implementation_id"] != prop[
"implementation_id"])
2288 if (!m_prop[
"vendor"].empty() &&
2289 m_prop[
"vendor"] != prop[
"vendor"]) {
return false; }
2290 if (!m_prop[
"category"].empty() &&
2291 m_prop[
"category"] != prop[
"category"]) {
return false; }
2292 if (!m_prop[
"version"].empty() &&
2293 m_prop[
"version"] != prop[
"version"]) {
return false; }
2325 :
m_name(factory->name()) {}
2351 std::vector<ExecutionContextBase*>
m_ecs;
2358 modlist.emplace_back(f->
profile().getProperty(
"implementation_id"));
ExecutionContext Factory class
RT-Component factory class
component action listener class
RT component logger class
ECFactoryBase 抽象クラス
Definition ECFactory.h:116
virtual const char * name()=0
生成対象ExecutionContext名称取得用純粋仮想関数
ExecutionContext用基底クラス
Definition ExecutionContextBase.h:366
FactoryBase 基底クラス
Definition Factory.h:138
virtual coil::Properties & profile()
コンポーネントプロファイルの取得
Logger クラス
Definition SystemLogger.h:101
Definition Manager.h:2222
FactoryPredicate(FactoryBase *factory)
Definition Manager.h:2236
FactoryPredicate(const char *imple_id)
Definition Manager.h:2224
bool operator()(FactoryBase *factory)
Definition Manager.h:2245
FactoryPredicate(const coil::Properties &prop)
Definition Manager.h:2228
Definition Manager.h:2275
bool operator()(coil::Properties &prop)
Definition Manager.h:2282
ModulePredicate(coil::Properties &prop)
Definition Manager.h:2278
Manager クラス
Definition Manager.h:91
std::string formatString(const char *naming_format, coil::Properties &prop)
NamingServer に登録する際の登録情報を組み立てる
void setEndpointProperty(CORBA::Object_ptr objref)
corba.endpoints にエンドポイント情報を設定する
static void removeTask(TaskId id)
周期実行タスクの削除
Definition Manager.h:426
ReturnCode_t load(const std::string &fname, const std::string &initfunc)
[CORBA interface] モジュールのロード
void cleanupComponent(RTObject_impl *comp)
RTコンポーネントの登録解除
static Manager * manager
唯一の Manager へのポインタ
Definition Manager.h:1992
bool unregisterComponent(RTObject_impl *comp)
RTコンポーネントの登録を解除する
bool initComposite()
PeriodicECSharedComposite の初期化
bool initExecContext()
ExecutionContextManager の初期化
bool initORB()
CORBA ORB の初期化処理
coil::Argv m_argv
ORB_init に指定する引数
Definition Manager.h:2055
void createORBEndpoints(coil::vstring &endpoints)
エンドポイントの生成
ECFactoryManager m_ecfactory
ExecutionContext マネージャ
Definition Manager.h:2342
Manager()
Protected コンストラクタ
ModuleInitProc m_initProc
ユーザ初期化関数へのポインタ
Definition Manager.h:2079
void addRtcLifecycleActionListener(RTM::RtcLifecycleActionListener *listener, bool autoclean=true)
std::vector< coil::Properties > getLoadableModules()
ロード可能なモジュールリストを取得する
bool registerFactory(coil::Properties &profile, RtcNewFunc new_func, RtcDeleteFunc delete_func)
RTコンポーネント用ファクトリを登録する
bool initLocalService()
LocalService の初期化
std::vector< coil::Properties > getLoadedModules()
ロード済みのモジュールリストを取得する
Manager(const Manager &)=delete
CORBA::ORB_ptr theORB()
ORB のポインタを取得する (所有権保持)
void shutdownComponents()
NamingManager に登録されている RTコンポーネントの終了処理
coil::Properties m_config
Manager の configuration を格納する Properties
Definition Manager.h:2088
void endpointPropertySwitch(const std::string &ipver, bool &ip, std::vector< int > &ip_list)
corba.endpoint_property からオプション情報を取得する
RTM::ManagerServant * m_mgrservant
ManagerServant へのポインタ
Definition Manager.h:1879
CORBA::ORB_var m_pORB
ORB へのポインタ
Definition Manager.h:2022
PortableServer::POAManager_ptr thePOAManager()
Manager が持つ POAManager を取得する (所有権保持)
void initPreCreation()
起動時にrtc.confで指定したRTCを生成する
NamingManager * m_namingManager
NamingManager へのポインタ
Definition Manager.h:2106
std::vector< std::filebuf * > m_logfiles
ログ出力ファイル
Definition Manager.h:2190
bool procContextArgs(const char *ec_args, std::string &ec_id, coil::Properties &ec_conf)
引数文字列からExecutionContext名・プロパティを抽出する
NamingManager * getNaming()
NamingManagerを取得する
ExecutionContextBase * createContext(const char *ec_args)
Contextを生成する
void initPreActivation()
起動時にrtc.confで指定したRTCをアクティベーションする
CORBA::ORB_ptr getORB()
ORB のポインタを取得する (所有権複製)
static Manager & instance()
マネージャのインスタンスの取得
void deleteComponent(RTObject_impl *comp)
Manager に登録されているRTコンポーネントを削除する
bool registerComponent(RTObject_impl *comp)
RTコンポーネントを直接 Manager に登録する
void cleanupComponents()
RTコンポーネントの削除する
std::string createORBOptions()
ORB のコマンドラインオプション作成
static Manager * init(int argc, char **argv)
マネージャの初期化
void createORBEndpointOption(std::string &opt, coil::vstring endpoints)
ORB の Endpoint のコマンドラインオプション作成
bool initLogger()
System logger の初期化
coil::Timer< coil::DelayedFunction > m_invoker
Manager スレッド上での遅延呼び出し用タイマー
Definition Manager.h:2115
static std::mutex mutex
唯一の Manager へのポインタに対する mutex
Definition Manager.h:2001
void mainThread()
Manager メインスレッドのメイン関数
Finalized m_finalized
Definition Manager.h:2369
bool initFactories()
ファクトリの初期化
std::thread m_threadOrb
ORB 用のスレッド
Definition Manager.h:2133
int m_argvSize
ORB_init に指定する引数
Definition Manager.h:2067
FactoryManager m_factory
ComponentManager
Definition Manager.h:2315
void removeNamingActionListener(RTM::NamingActionListener *listener)
void connectDataPorts(PortService_ptr port, PortServiceList_var &target_ports)
coil::Timer< coil::PeriodicFunction >::TaskId TaskId
Definition Manager.h:374
void removeRtcLifecycleActionListener(RTM::RtcLifecycleActionListener *listener)
void setModuleInitProc(ModuleInitProc proc)
初期化プロシージャのセット
void notifyFinalized(RTObject_impl *comp)
RTコンポーネントの削除する
PortableServer::POA_var m_pPOA
POA へのポインタ
Definition Manager.h:2031
void addManagerActionListener(RTM::ManagerActionListener *listener, bool autoclean=true)
PortableServer::POA_ptr getPOA()
Manager が持つ RootPOA のポインタを取得する (所有権複製)
bool mergeProperty(coil::Properties &prop, const char *file_name)
プロパティ情報のマージ
void addLocalServiceActionListener(RTM::LocalServiceActionListener *listener, bool autoclean=true)
void initPreConnection()
起動時にrtc.confで指定したポートを接続する
bool registerECFactory(const char *name, ECNewFunc new_func, ECDeleteFunc delete_func)
ExecutionContext用ファクトリを登録する
bool activateManager()
Managerのアクティブ化
ComponentManager m_compManager
コンポーネントマネージャ
Definition Manager.h:2215
RTObject_impl * getComponent(const char *instance_name)
Manager に登録されているRTコンポーネントを検索する
void configureComponent(RTObject_impl *comp, const coil::Properties &prop)
RTコンポーネントのコンフィギュレーション処理
Logger rtclog
ロガーストリーム
Definition Manager.h:2181
PortableServer::POAManager_ptr getPOAManager()
Manager が持つ POAManager を取得する (所有権複製)
void publishPorts(RTObject_impl *comp)
NamingManager & getNamingManager()
NamingManagerを取得する
std::string & getLogLevel()
コンフィグレーションのログレベルの取得
Definition Manager.h:260
void unload(const char *fname)
モジュールのアンロード
RTM::ManagerServant & getManagerServant()
ManagerServantを取得する
void runManager(bool no_block=false)
Managerの実行
PortableServer::POA_ptr thePOA()
Manager が持つ RootPOA のポインタを取得する (所有権保持)
void shutdown()
マネージャ・シャットダウン
std::list< coil::SignalAction > m_signals
シグナル管理用配列
Definition Manager.h:2151
void initManager(int argc, char **argv)
Manager の内部初期化処理
bool initManagerServant()
ManagerServant の初期化
void shutdownORB()
ORB の終了処理
static std::atomic_flag m_isRunning
メインスレッド停止用フラグ
Definition Manager.h:2010
std::vector< ExecutionContextBase * > m_ecs
ExecutionContext リスト
Definition Manager.h:2351
void initLogstreamOthers()
std::thread m_threadMain
Manager のメインスレッド
Definition Manager.h:2142
void invoke(std::function< void(void)> fn, std::chrono::nanoseconds delay=std::chrono::seconds::zero())
Manger のメインスレッドで処理を実行
void shutdownManagerServant()
Managerサーバント の終了処理
bool m_needsTimer
マネージャーがタイマーを利用するかどうかのフラグ
Definition Manager.h:2160
void unloadAll()
全モジュールのアンロード
void connectServicePorts(PortService_ptr port, PortServiceList_var &target_ports)
void initLogstreamPlugins()
PortServiceList * getPortsOnNameServers(const std::string &nsname, const std::string &kind)
std::vector< coil::Properties > getFactoryProfiles()
ファクトリのプロファイルを取得
void removeModuleActionListener(RTM::ModuleActionListener *listener)
void shutdownNaming()
NamingManager の終了処理
std::vector< std::string > getModulesFactories()
ファクトリ全リストを取得する
PortableServer::POAManager_var m_pPOAManager
POAManager へのポインタ
Definition Manager.h:2043
LogStreamBuf & getLogStreamBuf()
ログバッファの取得
Definition Manager.h:241
std::vector< RTObject_impl * > getComponents()
Manager に登録されている全RTコンポーネントを取得する
bool initNaming()
NamingManager の初期化
void deleteComponent(const char *instance_name)
Manager に登録されているRTコンポーネントを削除する
coil::Properties & getConfig()
マネージャコンフィギュレーションの取得
Definition Manager.h:279
bool procComponentArgs(const char *comp_arg, coil::Properties &comp_id, coil::Properties &comp_conf)
引数文字列からコンポーネント型名・プロパティを抽出する
void removeLocalServiceActionListener(RTM::LocalServiceActionListener *listener)
void addModuleActionListener(RTM::ModuleActionListener *listener, bool autoclean=true)
static void terminate()
マネージャ終了処理
void subscribePorts(RTObject_impl *comp)
coil::Timer< coil::PeriodicFunction > m_scheduler
Manager スレッド上での周期呼び出し用タイマー
Definition Manager.h:2124
LogStreamBuf m_logStreamBuf
ロガーバッファ
Definition Manager.h:2172
::RTM::ManagerActionListeners m_listeners
Definition Manager.h:2371
void removeManagerActionListener(RTM::ManagerActionListener *listener)
TaskId addTask(std::function< void(void)> fn, std::chrono::nanoseconds period)
周期実行タスクの登録
void shutdownLogger()
System Logger の終了処理
void addNamingActionListener(RTM::NamingActionListener *listener, bool autoclean=true)
RTObject_impl * createComponent(const char *comp_args)
RTコンポーネントを生成する
ModuleManager * m_module
ModuleManager へのポインタ
Definition Manager.h:2097
void join()
マネージャ終了処理の待ち合わせ
Manager & operator=(const Manager &)=delete
モジュールマネージャクラス
Definition ModuleManager.h:72
NamingServer 管理クラス
Definition NamingManager.h:626
RTコンポーネントクラス
Definition RTObject.h:93
LocalServiceActionListener クラス
Definition ManagerActionListener.h:716
Definition ManagerActionListener.h:62
ManagerActionListeners クラス
Definition ManagerActionListener.h:967
ManagerのCORBA化クラス
Definition ManagerServant.h:66
ModuleActionListener クラス
Definition ManagerActionListener.h:193
NamingActionListener クラス
Definition ManagerActionListener.h:558
RtcLifecycleActionListener クラス
Definition ManagerActionListener.h:355
ExecutionContextBase *(*)() ECNewFunc
Definition ECFactory.h:29
void(*)(RTObject_impl *) RtcDeleteFunc
Definition Factory.h:34
void(*)(ExecutionContextBase *) ECDeleteFunc
Definition ECFactory.h:30
::coil::LogStreamBuffer LogStreamBuf
Definition SystemLogger.h:34
void(*)(Manager *) ModuleInitProc
Definition Manager.h:68
RTObject_impl *(*)(Manager *) RtcNewFunc
Definition Factory.h:33
RT-Middleware
Definition FactoryInit.h:22
Definition DefaultPeriodicTask.h:24
Definition Manager.h:2322
ECFactoryPredicate(ECFactoryBase *factory)
Definition Manager.h:2324
bool operator()(ECFactoryBase *factory)
Definition Manager.h:2326
std::string m_name
Definition Manager.h:2330
ECFactoryPredicate(const char *name)
Definition Manager.h:2323
Definition Manager.h:2364
std::mutex mutex
Definition Manager.h:2366
std::vector< RTObject_impl * > comps
Definition Manager.h:2367
Definition Manager.h:2197
InstanceName(std::string name)
InstanceName(const char *name)
InstanceName(RTObject_impl *comp)
std::string m_name
Definition Manager.h:2202
bool operator()(RTObject_impl *comp)
Definition Manager.h:2355
void operator()(FactoryBase *f)
Definition Manager.h:2356
std::vector< std::string > modlist
Definition Manager.h:2360