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);
528 ReturnCode_t
load(coil::Properties &prop,
const std::string& initfunc);
985 bool autoclean =
true);
991 bool autoclean =
true);
997 bool autoclean =
true);
1003 bool autoclean =
true);
1009 bool autoclean =
true);
1111#ifdef ORB_IS_OMNIORB
1112 PortableServer::POA_ptr theShortCutPOA();
1151#ifdef ORB_IS_OMNIORB
1152 PortableServer::POA_ptr getShortCutPOA();
1644 coil::Properties& comp_id,
1645 coil::Properties& comp_conf);
1688 coil::Properties& ec_conf);
2016 coil::Properties& prop);
2035 bool& ip, std::vector<int>& ip_list);
2091#ifdef ORB_IS_OMNIORB
2092 PortableServer::POA_var m_pShortCutPOA;
2284 : m_vendor(
""), m_category(
""), m_impleid(imple_id), m_version(
""), m_language(
"")
2288 : m_vendor(prop[
"vendor"]),
2289 m_category(prop[
"category"]),
2290 m_impleid(prop[
"implementation_id"]),
2291 m_version(prop[
"version"]),
2292 m_language(prop[
"language"])
2296 : m_vendor(factory->profile()[
"vendor"]),
2297 m_category(factory->profile()[
"category"]),
2298 m_impleid(factory->profile()[
"implementation_id"]),
2299 m_version(factory->profile()[
"version"]),
2300 m_language(factory->profile()[
"language"])
2307 if (m_impleid.empty())
return false;
2309 const coil::Properties& prop(factory->
profile());
2311 if (m_impleid != prop[
"implementation_id"])
2313 if (!m_vendor.empty() && m_vendor != prop[
"vendor"])
2315 if (!m_category.empty() && m_category != prop[
"category"])
2317 if (!m_version.empty() && m_version != prop[
"version"])
2319 if (!m_language.empty() && m_language != prop[
"language"])
2326 std::string m_vendor;
2327 std::string m_category;
2328 std::string m_impleid;
2329 std::string m_version;
2330 std::string m_language;
2335 coil::Properties& m_prop;
2343 if (m_prop[
"implementation_id"] != prop[
"implementation_id"])
2347 if (!m_prop[
"vendor"].empty() &&
2348 m_prop[
"vendor"] != prop[
"vendor"]) {
return false; }
2349 if (!m_prop[
"category"].empty() &&
2350 m_prop[
"category"] != prop[
"category"]) {
return false; }
2351 if (!m_prop[
"version"].empty() &&
2352 m_prop[
"version"] != prop[
"version"]) {
return false; }
2384 :
m_name(factory->name()) {}
2410 std::vector<ExecutionContextBase*>
m_ecs;
2417 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:2281
FactoryPredicate(FactoryBase *factory)
Definition Manager.h:2295
FactoryPredicate(const char *imple_id)
Definition Manager.h:2283
bool operator()(FactoryBase *factory)
Definition Manager.h:2304
FactoryPredicate(const coil::Properties &prop)
Definition Manager.h:2287
Definition Manager.h:2334
bool operator()(coil::Properties &prop)
Definition Manager.h:2341
ModulePredicate(coil::Properties &prop)
Definition Manager.h:2337
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:2051
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:2114
void createORBEndpoints(coil::vstring &endpoints)
エンドポイントの生成
ECFactoryManager m_ecfactory
ExecutionContext マネージャ
Definition Manager.h:2401
Manager()
Protected コンストラクタ
ModuleInitProc m_initProc
ユーザ初期化関数へのポインタ
Definition Manager.h:2138
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:2147
void endpointPropertySwitch(const std::string &ipver, bool &ip, std::vector< int > &ip_list)
corba.endpoint_property からオプション情報を取得する
RTM::ManagerServant * m_mgrservant
ManagerServant へのポインタ
Definition Manager.h:1938
CORBA::ORB_var m_pORB
ORB へのポインタ
Definition Manager.h:2081
PortableServer::POAManager_ptr thePOAManager()
Manager が持つ POAManager を取得する (所有権保持)
void initPreCreation()
起動時にrtc.confで指定したRTCを生成する
NamingManager * m_namingManager
NamingManager へのポインタ
Definition Manager.h:2165
std::vector< std::filebuf * > m_logfiles
ログ出力ファイル
Definition Manager.h:2249
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:2174
static std::mutex mutex
唯一の Manager へのポインタに対する mutex
Definition Manager.h:2060
void mainThread()
Manager メインスレッドのメイン関数
Finalized m_finalized
Definition Manager.h:2428
bool initFactories()
ファクトリの初期化
std::thread m_threadOrb
ORB 用のスレッド
Definition Manager.h:2192
int m_argvSize
ORB_init に指定する引数
Definition Manager.h:2126
FactoryManager m_factory
ComponentManager
Definition Manager.h:2374
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コンポーネントの削除する
ReturnCode_t load(coil::Properties &prop, const std::string &initfunc)
[CORBA interface] モジュールのロード
PortableServer::POA_var m_pPOA
POA へのポインタ
Definition Manager.h:2090
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:2274
RTObject_impl * getComponent(const char *instance_name)
Manager に登録されているRTコンポーネントを検索する
void configureComponent(RTObject_impl *comp, const coil::Properties &prop)
RTコンポーネントのコンフィギュレーション処理
Logger rtclog
ロガーストリーム
Definition Manager.h:2240
PortableServer::POAManager_ptr getPOAManager()
Manager が持つ POAManager を取得する (所有権複製)
static bool isORBEndPoint(const std::string &endpoint)
giopからはじまるORBエンドポイントでの指定した場合にtrue、 それ以外(例えばホスト名:ポート番号の指定)の場合はfalseを返す。
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:2210
void initManager(int argc, char **argv)
Manager の内部初期化処理
bool initManagerServant()
ManagerServant の初期化
void shutdownORB()
ORB の終了処理
static std::atomic_flag m_isRunning
メインスレッド停止用フラグ
Definition Manager.h:2069
std::vector< ExecutionContextBase * > m_ecs
ExecutionContext リスト
Definition Manager.h:2410
void initLogstreamOthers()
std::thread m_threadMain
Manager のメインスレッド
Definition Manager.h:2201
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:2219
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:2102
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:2183
LogStreamBuf m_logStreamBuf
ロガーバッファ
Definition Manager.h:2231
::RTM::ManagerActionListeners m_listeners
Definition Manager.h:2430
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:2156
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
void(*)(Manager *) ModuleInitProc
Definition Manager.h:68
ExecutionContextBase *(*)() ECNewFunc
Definition ECFactory.h:29
void(*)(RTObject_impl *) RtcDeleteFunc
Definition Factory.h:34
void(*)(ExecutionContextBase *) ECDeleteFunc
Definition ECFactory.h:30
RTObject_impl *(*)(Manager *) RtcNewFunc
Definition Factory.h:33
::coil::LogStreamBuffer LogStreamBuf
Definition SystemLogger.h:34
RT-Middleware
Definition FactoryInit.h:22
Definition DefaultPeriodicTask.h:24
Definition Manager.h:2381
ECFactoryPredicate(ECFactoryBase *factory)
Definition Manager.h:2383
bool operator()(ECFactoryBase *factory)
Definition Manager.h:2385
std::string m_name
Definition Manager.h:2389
ECFactoryPredicate(const char *name)
Definition Manager.h:2382
Definition Manager.h:2423
std::mutex mutex
Definition Manager.h:2425
std::vector< RTObject_impl * > comps
Definition Manager.h:2426
Definition Manager.h:2256
InstanceName(std::string name)
InstanceName(const char *name)
InstanceName(RTObject_impl *comp)
std::string m_name
Definition Manager.h:2261
bool operator()(RTObject_impl *comp)
Definition Manager.h:2414
void operator()(FactoryBase *f)
Definition Manager.h:2415
std::vector< std::string > modlist
Definition Manager.h:2419