OpenRTM-aist  1.2.1
クラス | 公開メンバ関数 | 静的公開メンバ関数 | 限定公開型 | 限定公開メンバ関数 | 限定公開変数類 | 静的限定公開変数類 | 全メンバ一覧
RTC::Manager クラス

Manager クラス [詳解]

#include <Manager.h>

RTC::Manager 連携図
Collaboration graph
[凡例]

クラス

struct  ECFactoryPredicate
 
class  FactoryPredicate
 
struct  Finalized
 
struct  InstanceName
 
struct  ModuleFactories
 
class  ModulePredicate
 
class  OrbRunner
 OrbRunner クラス [詳解]
 
struct  Term
 
class  Terminator
 Terminator クラス [詳解]
 

公開メンバ関数

void terminate ()
 マネージャ終了処理 [詳解]
 
void shutdown ()
 マネージャ・シャットダウン [詳解]
 
void join ()
 マネージャ終了処理の待ち合わせ [詳解]
 
LogStreamBufgetLogStreamBuf ()
 ログバッファの取得 [詳解]
 
std::string & getLogLevel ()
 コンフィグレーションのログレベルの取得 [詳解]
 
coil::PropertiesgetConfig ()
 マネージャコンフィギュレーションの取得 [詳解]
 
void setModuleInitProc (ModuleInitProc proc)
 初期化プロシージャのセット [詳解]
 
bool activateManager ()
 Managerのアクティブ化 [詳解]
 
void runManager (bool no_block=false)
 Managerの実行 [詳解]
 
ReturnCode_t load (const std::string &fname, const std::string &initfunc)
 [CORBA interface] モジュールのロード [詳解]
 
void unload (const char *fname)
 モジュールのアンロード [詳解]
 
void unloadAll ()
 全モジュールのアンロード [詳解]
 
std::vector< coil::PropertiesgetLoadedModules ()
 ロード済みのモジュールリストを取得する [詳解]
 
std::vector< coil::PropertiesgetLoadableModules ()
 ロード可能なモジュールリストを取得する [詳解]
 
bool registerFactory (coil::Properties &profile, RtcNewFunc new_func, RtcDeleteFunc delete_func)
 RTコンポーネント用ファクトリを登録する [詳解]
 
std::vector< coil::PropertiesgetFactoryProfiles ()
 ファクトリのプロファイルを取得 [詳解]
 
bool registerECFactory (const char *name, ECNewFunc new_func, ECDeleteFunc delete_func)
 ExecutionContext用ファクトリを登録する [詳解]
 
std::vector< std::string > getModulesFactories ()
 ファクトリ全リストを取得する [詳解]
 
RTObject_implcreateComponent (const char *comp_args)
 RTコンポーネントを生成する [詳解]
 
ExecutionContextBasecreateContext (const char *ec_args)
 Contextを生成する [詳解]
 
void cleanupComponent (RTObject_impl *comp)
 RTコンポーネントの登録解除 [詳解]
 
void cleanupComponents ()
 RTコンポーネントの削除する [詳解]
 
void notifyFinalized (RTObject_impl *comp)
 RTコンポーネントの削除する [詳解]
 
bool registerComponent (RTObject_impl *comp)
 RTコンポーネントを直接 Manager に登録する [詳解]
 
bool unregisterComponent (RTObject_impl *comp)
 RTコンポーネントの登録を解除する [詳解]
 
void deleteComponent (RTObject_impl *comp)
 Manager に登録されているRTコンポーネントを削除する [詳解]
 
void deleteComponent (const char *instance_name)
 Manager に登録されているRTコンポーネントを削除する [詳解]
 
RTObject_implgetComponent (const char *instance_name)
 Manager に登録されているRTコンポーネントを検索する [詳解]
 
std::vector< RTObject_impl * > getComponents ()
 Manager に登録されている全RTコンポーネントを取得する [詳解]
 
void addManagerActionListener (RTM::ManagerActionListener *listener, bool autoclean=true)
 
void removeManagerActionListener (RTM::ManagerActionListener *listener)
 
void addModuleActionListener (RTM::ModuleActionListener *listener, bool autoclean=true)
 
void removeModuleActionListener (RTM::ModuleActionListener *listener)
 
void addRtcLifecycleActionListener (RTM::RtcLifecycleActionListener *listener, bool autoclean=true)
 
void removeRtcLifecycleActionListener (RTM::RtcLifecycleActionListener *listener)
 
void addNamingActionListener (RTM::NamingActionListener *listener, bool autoclean=true)
 
void removeNamingActionListener (RTM::NamingActionListener *listener)
 
void addLocalServiceActionListener (RTM::LocalServiceActionListener *listener, bool autoclean=true)
 
void removeLocalServiceActionListener (RTM::LocalServiceActionListener *listener)
 
CORBA::ORB_ptr theORB ()
 ORB のポインタを取得する (所有権保持) [詳解]
 
CORBA::ORB_ptr getORB ()
 ORB のポインタを取得する (所有権複製) [詳解]
 
PortableServer::POA_ptr thePOA ()
 Manager が持つ RootPOA のポインタを取得する (所有権保持) [詳解]
 
PortableServer::POA_ptr getPOA ()
 Manager が持つ RootPOA のポインタを取得する (所有権複製) [詳解]
 
PortableServer::POAManager_ptr thePOAManager ()
 Manager が持つ POAManager を取得する (所有権保持) [詳解]
 
PortableServer::POAManager_ptr getPOAManager ()
 Manager が持つ POAManager を取得する (所有権複製) [詳解]
 
RTM::ManagerServantgetManagerServant ()
 ManagerServantを取得する [詳解]
 
bool initLocalService ()
 LocalService の初期化 [詳解]
 
NamingManagergetNaming ()
 NamingManagerを取得する [詳解]
 

静的公開メンバ関数

static Managerinit (int argc, char **argv)
 マネージャの初期化 [詳解]
 
static Managerinstance ()
 マネージャのインスタンスの取得 [詳解]
 

限定公開型

typedef ObjectManager< std::string, RTObject_impl, InstanceNameComponentManager
 
typedef ObjectManager< const coil::Properties, FactoryBase, FactoryPredicateFactoryManager
 コンポーネントファクトリ [詳解]
 
typedef ObjectManager< const char *, ECFactoryBase, ECFactoryPredicateECFactoryManager
 

限定公開メンバ関数

 Manager ()
 Protected コンストラクタ [詳解]
 
 Manager (const Manager &manager)
 Protected コピーコンストラクタ [詳解]
 
void initManager (int argc, char **argv)
 Manager の内部初期化処理 [詳解]
 
void shutdownManager ()
 Manager の終了処理 [詳解]
 
void shutdownOnNoRtcs ()
 Manager の終了処理 [詳解]
 
void initLogstreamFile ()
 
void initLogstreamPlugins ()
 
void initLogstreamOthers ()
 
bool initLogger ()
 System logger の初期化 [詳解]
 
void shutdownLogger ()
 System Logger の終了処理 [詳解]
 
bool initORB ()
 CORBA ORB の初期化処理 [詳解]
 
std::string createORBOptions ()
 ORB のコマンドラインオプション作成 [詳解]
 
void createORBEndpoints (coil::vstring &endpoints)
 エンドポイントの生成 [詳解]
 
void createORBEndpointOption (std::string &opt, coil::vstring &endpoint)
 ORB の Endpoint のコマンドラインオプション作成 [詳解]
 
void shutdownORB ()
 ORB の終了処理 [詳解]
 
bool initNaming ()
 NamingManager の初期化 [詳解]
 
void shutdownNaming ()
 NamingManager の終了処理 [詳解]
 
NamingManagergetNamingManager ()
 NamingManagerを取得する [詳解]
 
void shutdownComponents ()
 NamingManager に登録されている RTコンポーネントの終了処理 [詳解]
 
bool procComponentArgs (const char *comp_arg, coil::Properties &comp_id, coil::Properties &comp_conf)
 引数文字列からコンポーネント型名・プロパティを抽出する [詳解]
 
bool procContextArgs (const char *ec_args, std::string &ec_id, coil::Properties &ec_conf)
 引数文字列からExecutionContext名・プロパティを抽出する [詳解]
 
void configureComponent (RTObject_impl *comp, const coil::Properties &prop)
 RTコンポーネントのコンフィギュレーション処理 [詳解]
 
bool initExecContext ()
 ExecutionContextManager の初期化 [詳解]
 
bool initComposite ()
 PeriodicECSharedComposite の初期化 [詳解]
 
bool initFactories ()
 ファクトリの初期化 [詳解]
 
void initCpuAffinity ()
 
void initPreConnection ()
 起動時にrtc.confで指定したポートを接続する [詳解]
 
void initPreActivation ()
 起動時にrtc.confで指定したRTCをアクティベーションする [詳解]
 
void initPreCreation ()
 起動時にrtc.confで指定したRTCを生成する [詳解]
 
void invokeInitProc ()
 
void publishPorts (RTObject_impl *comp)
 
void subscribePorts (RTObject_impl *comp)
 
PortServiceList_var getPortsOnNameServers (std::string nsname, std::string kind)
 
void connectDataPorts (PortService_ptr port, PortServiceList_var &target_ports)
 
void connectServicePorts (PortService_ptr port, PortServiceList_var &target_ports)
 
bool initTimer ()
 Timer の初期化 [詳解]
 
bool initManagerServant ()
 ManagerServant の初期化 [詳解]
 
bool mergeProperty (coil::Properties &prop, const char *file_name)
 プロパティ情報のマージ [詳解]
 
std::string formatString (const char *naming_format, coil::Properties &prop)
 NamingServer に登録する際の登録情報を組み立てる [詳解]
 
void setEndpointProperty (CORBA::Object_ptr objref)
 corba.endpoints にエンドポイント情報を設定する [詳解]
 
void endpointPropertySwitch (const std::string &ipver, bool &ip, std::vector< int > &ip_list)
 corba.endpoint_property からオプション情報を取得する [詳解]
 

限定公開変数類

RTM::ManagerServantm_mgrservant
 ManagerServant へのポインタ [詳解]
 
CORBA::ORB_var m_pORB
 ORB へのポインタ [詳解]
 
PortableServer::POA_var m_pPOA
 POA へのポインタ [詳解]
 
PortableServer::POAManager_var m_pPOAManager
 POAManager へのポインタ [詳解]
 
ModuleInitProc m_initProc
 ユーザ初期化関数へのポインタ [詳解]
 
coil::Properties m_config
 Manager の configuration を格納する Properties. [詳解]
 
ModuleManagerm_module
 ModuleManager へのポインタ [詳解]
 
NamingManagerm_namingManager
 NamingManager へのポインタ [詳解]
 
coil::Timerm_timer
 Timer Object. [詳解]
 
LogStreamBuf m_logStreamBuf
 ロガーバッファ [詳解]
 
Logger rtclog
 ロガーストリーム [詳解]
 
std::vector< std::filebuf * > m_logfiles
 ログ出力ファイル [詳解]
 
ComponentManager m_compManager
 コンポーネントマネージャ [詳解]
 
FactoryManager m_factory
 ComponentManager. [詳解]
 
ECFactoryManager m_ecfactory
 ExecutionContext マネージャ [詳解]
 
std::vector< ExecutionContextBase * > m_ecs
 ExecutionContext リスト [詳解]
 
OrbRunnerm_runner
 ORB ヘルパークラスへのポインタ [詳解]
 
Terminatorm_terminator
 ORB 終了用ヘルパークラスへのポインタ [詳解]
 
Term m_terminate
 マネージャ終了処理用同期フラグ [詳解]
 
Finalized m_finalized
 
::RTM::ManagerActionListeners m_listeners
 

静的限定公開変数類

static Managermanager
 唯一の Manager へのポインタ [詳解]
 
static Mutex mutex
 唯一の Manager へのポインタに対する mutex [詳解]
 

詳解

Manager クラス

コンポーネントなど各種の情報管理を行うマネージャクラス。

から
0.2.0

型定義メンバ詳解

コンポーネントファクトリ

構築子と解体子

RTC::Manager::Manager ( )
protected

Protected コンストラクタ

Protected コンストラクタ

RTC::Manager::Manager ( const Manager manager)
protected

Protected コピーコンストラクタ

Protected コピーコンストラクタ

引数
managerコピー元マネージャオブジェクト

関数詳解

bool RTC::Manager::activateManager ( )

Managerのアクティブ化

このオペレーションは以下の処理を行う

  • CORBA POAManager のアクティブ化
  • マネージャCORBAオブジェクトのアクティブ化
  • Manager のオブジェクト参照の登録

このオペレーションは、マネージャの初期化後、runManager() の前に呼ぶ必要がある。

戻り値
処理結果(アクティブ化成功:true、失敗:false)
void RTC::Manager::addLocalServiceActionListener ( RTM::LocalServiceActionListener listener,
bool  autoclean = true 
)
void RTC::Manager::addManagerActionListener ( RTM::ManagerActionListener listener,
bool  autoclean = true 
)
void RTC::Manager::addModuleActionListener ( RTM::ModuleActionListener listener,
bool  autoclean = true 
)
void RTC::Manager::addNamingActionListener ( RTM::NamingActionListener listener,
bool  autoclean = true 
)
void RTC::Manager::addRtcLifecycleActionListener ( RTM::RtcLifecycleActionListener listener,
bool  autoclean = true 
)
void RTC::Manager::cleanupComponent ( RTObject_impl comp)

RTコンポーネントの登録解除

指定したRTコンポーネントのインスタンスをネーミングサービスから 登録解除する。

引数
comp登録解除対象RTコンポーネント
void RTC::Manager::cleanupComponents ( )

RTコンポーネントの削除する

notifyFinalized()によって登録されたRTコンポーネントを削除する。

void RTC::Manager::configureComponent ( RTObject_impl comp,
const coil::Properties prop 
)
protected

RTコンポーネントのコンフィギュレーション処理

RTコンポーネントの型およびインスタンス毎に記載されたプロパティファイルの 情報を読み込み、コンポーネントに設定する。 また、各コンポーネントの NamingService 登録時の名称を取得し、設定する。

引数
compコンフィギュレーション対象RTコンポーネント
void RTC::Manager::connectDataPorts ( PortService_ptr  port,
PortServiceList_var &  target_ports 
)
protected
引数
port
target_ports
void RTC::Manager::connectServicePorts ( PortService_ptr  port,
PortServiceList_var &  target_ports 
)
protected
引数
port
target_ports
RTObject_impl* RTC::Manager::createComponent ( const char *  comp_args)

RTコンポーネントを生成する

指定したRTコンポーネントのインスタンスを登録されたFactory経由 で生成する。

生成されるコンポーネントの各種プロファイルは以下の優先順位で 設定される。

  1. createComponent() の引数で与えられたプロファイル
  2. rtc.confで指定された外部ファイルで与えられたプロファイル –# category.instance_name.config_file –# category.component_type.config_file
  3. コードに埋め込まれたプロファイル

インスタンス生成が成功した場合、併せて以下の処理を実行する。

  • 外部ファイルで設定したコンフィギュレーション情報の読み込み,設定
  • ExecutionContextのバインド,動作開始
  • ネーミングサービスへの登録
引数
comp_args生成対象RTコンポーネントIDおよびコンフィギュレー ション引数。フォーマットは大きく分けて "id" と "configuration" 部分が存在する。

comp_args: [id]?[configuration] id は必須、configurationはオプション id: RTC:[vendor]:[category]:[implementation_id]:[version] RTC は固定かつ必須 vendor, category, version はオプション implementation_id は必須 オプションを省略する場合でも ":" は省略不可 configuration: [key0]=[value0]&[key1]=[value1]&[key2]=[value2]..... RTCが持つPropertiesの値をすべて上書きすることができる。 key=value の形式で記述し、"&" で区切る

例えば、 RTC:jp.go.aist:example:ConfigSample:1.0?conf.default.str_param0=munya RTC::example:ConfigSample:?conf.default.int_param0=100

戻り値
生成したRTコンポーネントのインスタンス
ExecutionContextBase* RTC::Manager::createContext ( const char *  ec_args)

Contextを生成する

戻り値
生成したConetextのインスタンス
void RTC::Manager::createORBEndpointOption ( std::string &  opt,
coil::vstring endpoint 
)
protected

ORB の Endpoint のコマンドラインオプション作成

引数
optコマンドラインオプション
endpointエンドポイントリスト
void RTC::Manager::createORBEndpoints ( coil::vstring endpoints)
protected

エンドポイントの生成

コンフィグレーションからエンドポイントを生成する。

引数
endpointsエンドポイントリスト
std::string RTC::Manager::createORBOptions ( )
protected

ORB のコマンドラインオプション作成

コンフィギュレーション情報に設定された内容から ORB の起動時オプションを作成する。

戻り値
ORB 起動時オプション
void RTC::Manager::deleteComponent ( RTObject_impl comp)

Manager に登録されているRTコンポーネントを削除する

マネージャに登録されているRTコンポーネントを削除する。 指定されたRTコンポーネントをネーミングサービスから削除し、 RTコンポーネント自体を終了させるとともに、インスタンスを解放する。

引数
comp削除対象RTコンポーネントのインスタンス
void RTC::Manager::deleteComponent ( const char *  instance_name)

Manager に登録されているRTコンポーネントを削除する

マネージャに登録されているRTコンポーネントを削除する。 指定されたRTコンポーネントをネーミングサービスから削除し、 RTコンポーネント自体を終了させるとともに、インスタンスを解放する。

引数
instance_name削除対象RTコンポーネントのインスタンス名
void RTC::Manager::endpointPropertySwitch ( const std::string &  ipver,
bool &  ip,
std::vector< int > &  ip_list 
)
protected

corba.endpoint_property からオプション情報を取得する

std::string RTC::Manager::formatString ( const char *  naming_format,
coil::Properties prop 
)
protected

NamingServer に登録する際の登録情報を組み立てる

指定された書式とプロパティ情報を基に NameServer に登録する際の情報を 組み立てる。 各書式指定用文字の意味は以下のとおり

  • % : コンテキストの区切り
  • n : インスタンス名称
  • t : 型名
  • m : 型名
  • v : バージョン
  • V : ベンダー
  • c : カテゴリ
  • h : ホスト名
  • M : マネージャ名
  • p : プロセスID
引数
naming_formatNamingService 登録情報書式指定
prop使用するプロパティ情報
戻り値
指定書式変換結果
RTObject_impl* RTC::Manager::getComponent ( const char *  instance_name)

Manager に登録されているRTコンポーネントを検索する

Manager に登録されているRTコンポーネントを指定した名称で検索し、 合致するコンポーネントを取得する。

引数
instance_name検索対象RTコンポーネントの名称
戻り値
名称が一致するRTコンポーネントのインスタンス
std::vector<RTObject_impl*> RTC::Manager::getComponents ( )

Manager に登録されている全RTコンポーネントを取得する

Manager に登録されているRTコンポーネントの全インスタンスを取得する。

戻り値
全RTコンポーネントのインスタンスリスト
coil::Properties& RTC::Manager::getConfig ( )
inline

マネージャコンフィギュレーションの取得

マネージャに設定したコンフィギュレーションを取得する。

戻り値
マネージャのコンフィギュレーション
std::vector<coil::Properties> RTC::Manager::getFactoryProfiles ( )

ファクトリのプロファイルを取得

ファクトリのプロファイルを取得する。

戻り値
ファクトリのプロファイル
std::vector<coil::Properties> RTC::Manager::getLoadableModules ( )

ロード可能なモジュールリストを取得する

ロード可能モジュールのリストを取得する。 (現在はModuleManager側で未実装)

戻り値
ロード可能モジュール リスト
std::vector<coil::Properties> RTC::Manager::getLoadedModules ( )

ロード済みのモジュールリストを取得する

現在マネージャにロードされているモジュールのリストを取得する。

戻り値
ロード済みモジュールリスト
std::string& RTC::Manager::getLogLevel ( )
inline

コンフィグレーションのログレベルの取得

コンフィグレーションのログレベルを取得する。

戻り値
コンフィギュレーションのログレベル
LogStreamBuf& RTC::Manager::getLogStreamBuf ( )
inline

ログバッファの取得

マネージャに設定したログバッファを取得する。

戻り値
マネージャに設定したログバッファ
RTM::ManagerServant& RTC::Manager::getManagerServant ( )

ManagerServantを取得する

戻り値
ManagerServant
std::vector<std::string> RTC::Manager::getModulesFactories ( )

ファクトリ全リストを取得する

登録されているファクトリの全リストを取得する。

戻り値
登録ファクトリ リスト
NamingManager* RTC::Manager::getNaming ( )

NamingManagerを取得する

戻り値
NamingManager
NamingManager& RTC::Manager::getNamingManager ( )
protected

NamingManagerを取得する

CORBA::ORB_ptr RTC::Manager::getORB ( )

ORB のポインタを取得する (所有権複製)

Manager に設定された ORB のポインタを取得する。所有権はコピーさ れ(リファレンスカウントが1増加する。)、受け取った側でも所有権 を獲得する。したがって、使用後にはリファレンスを解放する必要があ る。通常は以下のように戻り値を _var 型変数で受け取り、自動的に解 放させる方法が推奨される。

{ CORBA::ORB_var orb = Manager::instance().getORB(); orb->string_to_object(<IOR string>); } // ORB's reference in orb is released here.

戻り値
ORB オブジェクト

参照元 CORBA_SeqUtil::refToVstring().

PortableServer::POA_ptr RTC::Manager::getPOA ( )

Manager が持つ RootPOA のポインタを取得する (所有権複製)

Manager に設定された RootPOA へのポインタを取得する。所有権はコ ピーされ(リファレンスカウントが1増加する。)、受け取った側でも 所有権を獲得する。したがって、使用後にはリファレンスを解放する必 要がある。通常は以下のように戻り値を _var 型変数で受け取り、自動 的に解放させる方法が推奨される。

{ PortableServer::POA_var poa = Manager::instance().getPOA();; poa->servant_to_id(m_servant); } // POA's reference in orb is released here.

戻り値
RootPOAオブジェクト
PortableServer::POAManager_ptr RTC::Manager::getPOAManager ( )

Manager が持つ POAManager を取得する (所有権複製)

Manager に設定された POAMAnager を取得する。所有権はコピーさ れ(リファレンスカウントが1増加する。)、受け取った側でも所有権 を獲得する。したがって、使用後にはリファレンスを解放する必要があ る。通常は以下のように戻り値を _var 型変数で受け取り、自動的に解 放させる方法が推奨される。

{ PortableServer::POAManager_var poam; poam = = Manager::instance().getPOAManager(); poam->activate(); } // POAManager's reference in orb is released here.

戻り値
POAマネージャ
PortServiceList_var RTC::Manager::getPortsOnNameServers ( std::string  nsname,
std::string  kind 
)
protected
引数
comp
static Manager* RTC::Manager::init ( int  argc,
char **  argv 
)
static

マネージャの初期化

マネージャを初期化する static メンバ関数。 マネージャをコマンドライン引数を与えて初期化する。 マネージャを使用する場合は、必ずこの初期化メンバ関数 init() を 呼ばなければならない。 マネージャのインスタンスを取得する方法として、init(), instance() の 2つの static メンバ関数が用意されているが、初期化はinit()でしか 行われないため、Manager の生存期間の一番最初にはinit()を呼ぶ必要がある。

※マネージャの初期化処理

  • initManager: 引数処理、configファイルの読み込み、サブシステム初期化
  • initLogger: Logger初期化
  • initORB: ORB 初期化
  • initNaming: NamingService 初期化
  • initExecutionContext: ExecutionContext factory 初期化
  • initTimer: Timer 初期化
引数
argcコマンドライン引数の数
argvコマンドライン引数
戻り値
Manager の唯一のインスタンスの参照
bool RTC::Manager::initComposite ( )
protected

PeriodicECSharedComposite の初期化

戻り値
PeriodicECSharedComposite 初期化処理実行結果 (初期化成功:true、初期化失敗:false)
void RTC::Manager::initCpuAffinity ( )
protected
bool RTC::Manager::initExecContext ( )
protected

ExecutionContextManager の初期化

使用する各 ExecutionContext の初期化処理を実行し、各 ExecutionContext 生成用 Factory を ExecutionContextManager に登録する。

戻り値
ExecutionContextManager 初期化処理実行結果 (初期化成功:true、初期化失敗:false)
bool RTC::Manager::initFactories ( )
protected

ファクトリの初期化

バッファ、スレッド、パブリッシャ、プロバイダ、コンシューマの ファクトリを初期化する。

戻り値
ファクトリ初期化処理実行結果 (初期化成功:true、初期化失敗:false)
bool RTC::Manager::initLocalService ( )

LocalService の初期化

戻り値
Timer 初期化処理実行結果(初期化成功:true、初期化失敗:false)
bool RTC::Manager::initLogger ( )
protected

System logger の初期化

System logger の初期化を実行する。 コンフィギュレーションファイルに設定された情報に基づき、 ロガーの初期化,設定を実行する。

戻り値
初期化実行結果(初期化成功:true、初期化失敗:false)
void RTC::Manager::initLogstreamFile ( )
protected
void RTC::Manager::initLogstreamOthers ( )
protected
void RTC::Manager::initLogstreamPlugins ( )
protected
void RTC::Manager::initManager ( int  argc,
char **  argv 
)
protected

Manager の内部初期化処理

Manager の内部初期化処理を実行する。

  • Manager コンフィギュレーションの設定
  • ログ出力ファイルの設定
  • 終了処理用スレッドの生成
  • タイマ用スレッドの生成(タイマ使用時)
引数
argcコマンドライン引数の数
argvコマンドライン引数
bool RTC::Manager::initManagerServant ( )
protected

ManagerServant の初期化

戻り値
Timer 初期化処理実行結果(初期化成功:true、初期化失敗:false)
bool RTC::Manager::initNaming ( )
protected

NamingManager の初期化

NamingManager の初期化処理を実行する。 ただし、NamingManager を使用しないようにプロパティ情報に設定されている 場合には何もしない。 NamingManager を使用する場合、プロパティ情報に設定されている デフォルト NamingServer を登録する。 また、定期的に情報を更新するように設定されている場合には、指定された周期 で自動更新を行うためのタイマを起動するとともに、更新用メソッドをタイマに 登録する。

戻り値
初期化処理結果(初期化成功:true、初期化失敗:false)
bool RTC::Manager::initORB ( )
protected

CORBA ORB の初期化処理

引数により与えられた設定を元にORBを初期化する。

戻り値
ORB 初期化処理結果(初期化成功:true、初期化失敗:false)
void RTC::Manager::initPreActivation ( )
protected

起動時にrtc.confで指定したRTCをアクティベーションする

例: manager.components.preactivation: RTC1,RTC2~

void RTC::Manager::initPreConnection ( )
protected

起動時にrtc.confで指定したポートを接続する

例: manager.components.preconnect: RTC0.port0?RTC0.port1&interface_type=corba_cdr&dataflow_type=pull&~,~

void RTC::Manager::initPreCreation ( )
protected

起動時にrtc.confで指定したRTCを生成する

例: manager.components.precreate RTC1,RTC2~

bool RTC::Manager::initTimer ( )
protected

Timer の初期化

使用する各 Timer の初期化処理を実行する。 (現状の実装では何もしない)

戻り値
Timer 初期化処理実行結果(初期化成功:true、初期化失敗:false)
static Manager& RTC::Manager::instance ( )
static

マネージャのインスタンスの取得

マネージャのインスタンスを取得する static メンバ関数。 この関数を呼ぶ前に、必ずこの初期化メンバ関数 init() が呼ばれている 必要がある。

戻り値
Manager の唯一のインスタンスの参照

参照元 CORBA_SeqUtil::refToVstring().

void RTC::Manager::invokeInitProc ( )
protected
void RTC::Manager::join ( )

マネージャ終了処理の待ち合わせ

同期を取るため、マネージャ終了処理の待ち合わせを行う。

ReturnCode_t RTC::Manager::load ( const std::string &  fname,
const std::string &  initfunc 
)

[CORBA interface] モジュールのロード

指定したコンポーネントのモジュールをロードするとともに、 指定した初期化関数を実行する。

引数
fnameモジュールファイル名
initfunc初期化関数名
戻り値
終了コード RTC::RTC_OK 正常終了 RTC::RTC_ERROR ロード失敗・不明なエラー RTC::PRECONDITION_NOT_MET 設定にり許可されない操作 RTC::BAD_PARAMETER 不正なパラメータ
bool RTC::Manager::mergeProperty ( coil::Properties prop,
const char *  file_name 
)
protected

プロパティ情報のマージ

指定されたファイル内に設定されているプロパティ情報をロードし、 既存の設定済みプロパティとマージする。

引数
propマージ対象プロパティ
file_nameプロパティ情報が記述されているファイル名
戻り値
マージ処理実行結果(マージ成功:true、マージ失敗:false)
void RTC::Manager::notifyFinalized ( RTObject_impl comp)

RTコンポーネントの削除する

削除するRTコンポーネントを登録する。 登録されたRTコンポーネントは cleanupComponents() で削除される。

引数
削除するRTコンポーネント
bool RTC::Manager::procComponentArgs ( const char *  comp_arg,
coil::Properties comp_id,
coil::Properties comp_conf 
)
protected

引数文字列からコンポーネント型名・プロパティを抽出する

文字列からコンポーネント型とコンポーネントのプロパティを抽出する。 与えられる文字列のフォーマットは RTC の ID とコンフィギュレーショ ンからなる

[RTC type]?[key(0)]=[val(0)]&[key(1)]=[val(1)]&...&[key(n)]=[val(n)]

である。なお、RTC type は implementation_id のみ、もしくは、下記 の RTC ID 形式

RTC:[vendor]:[category]:[impl_id]:[version]

を受け付ける。戻り値である、comp_id は、 "vendor", "category", "implementation_id", "version" のキーを持つ Properties 型のオブジェクトとして返される。 comp_conf には "?" 以下に記述されるコンポーネントに与えるプロパティ が Properties 型のオブジェクトとして返される。

戻り値
comp_arg にコンポーネント型が含まれていない場合false
引数
comp_arg処理すべき文字列
comp_id抽出されたコンポーネントの型名
comp_conf抽出されたコンポーネントのプロパティ
bool RTC::Manager::procContextArgs ( const char *  ec_args,
std::string &  ec_id,
coil::Properties ec_conf 
)
protected

引数文字列からExecutionContext名・プロパティを抽出する

文字列からExecutionContext名とプロパティを抽出する。 与えられる文字列のフォーマットは RTC の ID とコンフィギュレーショ ンからなる

[ExecutionContext名]?[key(0)]=[val(0)]&[key(1)]=[val(1)]&...&[key(n)]=[val(n)]

である。

ec_conf には "?" 以下に記述されるコンポーネントに与えるプロパティ が Properties 型のオブジェクトとして返される。

戻り値
ec_args にExecutionContext名が含まれていない場合false
引数
ec_args処理すべき文字列
ec_id抽出されたExecutionContext名
ec_conf抽出されたExecutionContextのプロパティ
void RTC::Manager::publishPorts ( RTObject_impl comp)
protected
引数
comp
bool RTC::Manager::registerComponent ( RTObject_impl comp)

RTコンポーネントを直接 Manager に登録する

指定したRTコンポーネントのインスタンスを ファクトリ経由ではなく直接マネージャに登録する。

引数
comp登録対象RTコンポーネントのインスタンス
戻り値
登録処理結果(登録成功:true、失敗:false)
bool RTC::Manager::registerECFactory ( const char *  name,
ECNewFunc  new_func,
ECDeleteFunc  delete_func 
)

ExecutionContext用ファクトリを登録する

ExecutionContextのインスタンスを生成するための Factoryを登録する。

引数
name生成対象ExecutionContext名称
new_funcExecutionContext生成用関数
delete_funcExecutionContext破棄用関数
戻り値
登録処理結果(登録成功:true、失敗:false)
bool RTC::Manager::registerFactory ( coil::Properties profile,
RtcNewFunc  new_func,
RtcDeleteFunc  delete_func 
)

RTコンポーネント用ファクトリを登録する

RTコンポーネントのインスタンスを生成するための Factoryを登録する。

引数
profileRTコンポーネント プロファイル
new_funcRTコンポーネント生成用関数
delete_funcRTコンポーネント破棄用関数
戻り値
登録処理結果(登録成功:true、失敗:false)
void RTC::Manager::removeLocalServiceActionListener ( RTM::LocalServiceActionListener listener)
void RTC::Manager::removeManagerActionListener ( RTM::ManagerActionListener listener)
void RTC::Manager::removeModuleActionListener ( RTM::ModuleActionListener listener)
void RTC::Manager::removeNamingActionListener ( RTM::NamingActionListener listener)
void RTC::Manager::removeRtcLifecycleActionListener ( RTM::RtcLifecycleActionListener listener)
void RTC::Manager::runManager ( bool  no_block = false)

Managerの実行

このオペレーションはマネージャのメインループを実行する。 このメインループ内では、CORBA ORBのイベントループ等が 処理される。デフォルトでは、このオペレーションはブロックし、 Manager::destroy() が呼ばれるまで処理を戻さない。 引数 no_block が true に設定されている場合は、内部でイベントループ を処理するスレッドを起動し、ブロックせずに処理を戻す。

引数
no_blockfalse: ブロッキングモード, true: ノンブロッキングモード
void RTC::Manager::setEndpointProperty ( CORBA::Object_ptr  objref)
protected

corba.endpoints にエンドポイント情報を設定する

void RTC::Manager::setModuleInitProc ( ModuleInitProc  proc)

初期化プロシージャのセット

このオペレーションはユーザが行うモジュール等の初期化プロシージャ を設定する。ここで設定されたプロシージャは、マネージャが初期化され、 アクティブ化された後、適切なタイミングで実行される。

引数
proc初期化プロシージャの関数ポインタ
void RTC::Manager::shutdown ( )

マネージャ・シャットダウン

マネージャの終了処理を実行する。 ORB終了後、同期を取って終了する。

void RTC::Manager::shutdownComponents ( )
protected

NamingManager に登録されている RTコンポーネントの終了処理

NamingManager に登録されているRTコンポーネントのリストを取得し、 全コンポーネントを終了する。

void RTC::Manager::shutdownLogger ( )
protected

System Logger の終了処理

System Loggerの終了処理を実行する。 バッファ内に保持されているログ情報が存在する場合には、 強制的にログファイルに出力し、ログファイルを閉じる。

void RTC::Manager::shutdownManager ( )
protected

Manager の終了処理

Manager を終了する (ただし,現在は未実装)

void RTC::Manager::shutdownNaming ( )
protected

NamingManager の終了処理

NamingManager を終了する。 登録されている全要素をアンバインドし、終了する。

void RTC::Manager::shutdownOnNoRtcs ( )
protected

Manager の終了処理

configuration の "manager.shutdown_on_nortcs" YES で、 コンポーネントが登録されていない場合 Manager を終了する。

void RTC::Manager::shutdownORB ( )
protected

ORB の終了処理

ORB の終了処理を実行する。 実行待ちの処理が存在する場合には、その処理が終了するまで待つ。 実際の終了処理では、POA Managerを非活性化し、 ORB のシャットダウンを実行 する。

void RTC::Manager::subscribePorts ( RTObject_impl comp)
protected
引数
comp
void RTC::Manager::terminate ( )

マネージャ終了処理

マネージャの終了処理を実行する。

CORBA::ORB_ptr RTC::Manager::theORB ( )

ORB のポインタを取得する (所有権保持)

Manager に設定された ORB のポインタを取得する。所有権は保持され たままである。_var型で受ける場合は getORB() を用いること。この関 数は以下のようにORBのオペレーションを直接呼ぶ場合に利用する。

Manager::instance().theORB()->string_to_object(<IOR string>);

戻り値
ORB オブジェクト
PortableServer::POA_ptr RTC::Manager::thePOA ( )

Manager が持つ RootPOA のポインタを取得する (所有権保持)

Manager に設定された RootPOA へのポインタを取得する。所有権は保持され たままである。_var型で受ける場合は getPOA() を用いること。この関 数は以下のようにPOAのオペレーションを直接呼ぶ場合に利用する。

Manager::instance().getPOA()->servant_to_id(m_servant);

戻り値
RootPOAオブジェクト
PortableServer::POAManager_ptr RTC::Manager::thePOAManager ( )

Manager が持つ POAManager を取得する (所有権保持)

Manager に設定された POAMAnager を取得する。所有権は保持され たままである。_var型で受ける場合は getORB() を用いること。この関 数は以下のようにORBのオペレーションを直接呼ぶ場合に利用する。

Manager::instance().thePOAManager()->activate();

戻り値
POAマネージャ
void RTC::Manager::unload ( const char *  fname)

モジュールのアンロード

モジュールをアンロードする

引数
fnameモジュールのファイル名
void RTC::Manager::unloadAll ( )

全モジュールのアンロード

モジュールをすべてアンロードする

bool RTC::Manager::unregisterComponent ( RTObject_impl comp)

RTコンポーネントの登録を解除する

指定したRTコンポーネントの登録を解除する。

引数
comp登録解除対象RTコンポーネントのインスタンス
戻り値
登録解除処理結果(解除成功:true、解除失敗:false)

メンバ詳解

ComponentManager RTC::Manager::m_compManager
protected

コンポーネントマネージャ

coil::Properties RTC::Manager::m_config
protected

Manager の configuration を格納する Properties.

ECFactoryManager RTC::Manager::m_ecfactory
protected

ExecutionContext マネージャ

std::vector<ExecutionContextBase*> RTC::Manager::m_ecs
protected

ExecutionContext リスト

FactoryManager RTC::Manager::m_factory
protected

ComponentManager.

Finalized RTC::Manager::m_finalized
protected
ModuleInitProc RTC::Manager::m_initProc
protected

ユーザ初期化関数へのポインタ

::RTM::ManagerActionListeners RTC::Manager::m_listeners
protected
std::vector<std::filebuf*> RTC::Manager::m_logfiles
protected

ログ出力ファイル

LogStreamBuf RTC::Manager::m_logStreamBuf
protected

ロガーバッファ

RTM::ManagerServant* RTC::Manager::m_mgrservant
protected

ManagerServant へのポインタ

ModuleManager* RTC::Manager::m_module
protected

ModuleManager へのポインタ

NamingManager* RTC::Manager::m_namingManager
protected

NamingManager へのポインタ

CORBA::ORB_var RTC::Manager::m_pORB
protected

ORB へのポインタ

PortableServer::POA_var RTC::Manager::m_pPOA
protected

POA へのポインタ

PortableServer::POAManager_var RTC::Manager::m_pPOAManager
protected

POAManager へのポインタ

OrbRunner* RTC::Manager::m_runner
protected

ORB ヘルパークラスへのポインタ

Term RTC::Manager::m_terminate
protected

マネージャ終了処理用同期フラグ

マネージャ終了の待ち合せ処理で同期を取るためのフラグ。

Terminator* RTC::Manager::m_terminator
protected

ORB 終了用ヘルパークラスへのポインタ

coil::Timer* RTC::Manager::m_timer
protected

Timer Object.

Manager* RTC::Manager::manager
staticprotected

唯一の Manager へのポインタ

Mutex RTC::Manager::mutex
staticprotected

唯一の Manager へのポインタに対する mutex

Logger RTC::Manager::rtclog
protected

ロガーストリーム


このクラス詳解は次のファイルから抽出されました: