クラス RTC::Manager

Manager クラス [詳細]

#include <Manager.h>

すべてのメンバ一覧

Public メソッド

void terminate ()
 マネージャ終了処理
void shutdown ()
 マネージャ・シャットダウン
void join ()
 マネージャ終了処理の待ち合わせ
LogStreamBufgetLogStreamBuf ()
 ログバッファの取得
std::string & getLogLevel ()
coil::Properties & getConfig ()
 マネージャコンフィギュレーションの取得
void setModuleInitProc (ModuleInitProc proc)
 初期化プロシージャのセット
bool activateManager ()
 Managerのアクティブ化
void runManager (bool no_block=false)
 Managerの実行
void load (const char *fname, const char *initfunc)
 [CORBA interface] モジュールのロード
void unload (const char *fname)
 モジュールのアンロード
void unloadAll ()
 全モジュールのアンロード
std::vector
< coil::Properties > 
getLoadedModules ()
 ロード済みのモジュールリストを取得する
std::vector
< coil::Properties > 
getLoadableModules ()
 ロード可能なモジュールリストを取得する
bool registerFactory (coil::Properties &profile, RtcNewFunc new_func, RtcDeleteFunc delete_func)
 RTコンポーネント用ファクトリを登録する
std::vector
< coil::Properties > 
getFactoryProfiles ()
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)
void cleanupComponent (RTObject_impl *comp)
 RTコンポーネントの登録解除
bool registerComponent (RTObject_impl *comp)
 RTコンポーネントを直接 Manager に登録する
bool unregisterComponent (RTObject_impl *comp)
 RTコンポーネントの登録を解除する
void deleteComponent (const char *instance_name)
 Manager に登録されているRTコンポーネントを削除する
RTObject_implgetComponent (const char *instance_name)
 Manager に登録されているRTコンポーネントを検索する
std::vector
< RTObject_impl * > 
getComponents ()
 Manager に登録されている全RTコンポーネントを取得する
CORBA::ORB_ptr getORB ()
 ORB のポインタを取得する
PortableServer::POA_ptr getPOA ()
 Manager が持つ RootPOA のポインタを取得する
PortableServer::POAManager_ptr getPOAManager ()
 Manager が持つ POAManager を取得する

Static Public メソッド

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

Protected 型

typedef
ObjectManager
< std::string,
RTObject_impl,
InstanceName
ComponentManager
typedef
ObjectManager< const
coil::Properties,
FactoryBase,
FactoryPredicate
FactoryManager
 コンポーネントファクトリ
typedef
ObjectManager< const
char *,
ECFactoryBase,
ECFactoryPredicate
ECFactoryManager

Protected メソッド

 Manager ()
 Protected コンストラクタ
 Manager (const Manager &manager)
 Protected コピーコンストラクタ
void initManager (int argc, char **argv)
 Manager の内部初期化処理
void shutdownManager ()
 Manager の終了処理
bool initLogger ()
 System logger の初期化
void shutdownLogger ()
 System Logger の終了処理
bool initORB ()
 CORBA ORB の初期化処理
std::string createORBOptions ()
 ORB のコマンドラインオプション作成
void shutdownORB ()
 ORB の終了処理
bool initNaming ()
 NamingManager の初期化
void shutdownNaming ()
 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)
void configureComponent (RTObject_impl *comp, const coil::Properties &prop)
 RTコンポーネントのコンフィギュレーション処理
bool initExecContext ()
 ExecutionContextManager の初期化
bool initComposite ()
bool initFactories ()
bool initTimer ()
 Timer の初期化
bool initManagerServant ()
bool mergeProperty (coil::Properties &prop, const char *file_name)
 プロパティ情報のマージ
std::string formatString (const char *naming_format, coil::Properties &prop)
 NamingServer に登録する際の登録情報を組み立てる

Protected 変数

RTM::ManagerServantm_mgrservant
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::Timer * m_timer
 Timer Object
LogStreamBuf m_logStreamBuf
 ロガーバッファ
Logger rtclog
 ロガーストリーム
std::vector
< std::ofstream * > 
m_logfiles
ComponentManager m_compManager
 コンポーネントマネージャ
FactoryManager m_factory
 ComponentManager
ECFactoryManager m_ecfactory
 ExecutionContext マネージャ
std::vector
< ExecutionContextBase * > 
m_ecs
 ExecutionContext リスト
OrbRunnerm_runner
Terminatorm_terminator
 Terminator
Term m_terminate

Static Protected 変数

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

構成

struct  ECFactoryPredicate
class  FactoryPredicate
struct  InstanceName
struct  ModuleFactories
class  OrbRunner
 OrbRunner クラス [詳細]
struct  Term
class  Terminator
 Terminator クラス [詳細]


説明

Manager クラス

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

から:
0.2.0

型定義

typedef ObjectManager<std::string, RTObject_impl, InstanceName> RTC::Manager::ComponentManager [protected]

typedef ObjectManager<const coil::Properties, FactoryBase, FactoryPredicate> RTC::Manager::FactoryManager [protected]

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

typedef ObjectManager<const char*, ECFactoryBase, ECFactoryPredicate> RTC::Manager::ECFactoryManager [protected]


コンストラクタとデストラクタ

RTC::Manager::Manager (  )  [protected]

Protected コンストラクタ

Protected コンストラクタ

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

Protected コピーコンストラクタ

Protected コピーコンストラクタ

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


関数

static Manager* RTC::Manager::init ( int  argc,
char **  argv 
) [static]

マネージャの初期化

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

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

引数:
argc コマンドライン引数の数
argv コマンドライン引数
戻り値:
Manager の唯一のインスタンスの参照

static Manager& RTC::Manager::instance (  )  [static]

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

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

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

void RTC::Manager::terminate (  ) 

マネージャ終了処理

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

void RTC::Manager::shutdown (  ) 

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

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

void RTC::Manager::join (  ) 

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

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

LogStreamBuf& RTC::Manager::getLogStreamBuf (  )  [inline]

ログバッファの取得

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

戻り値:
マネージャに設定したログバッファ

std::string& RTC::Manager::getLogLevel (  )  [inline]

coil::Properties& RTC::Manager::getConfig (  )  [inline]

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

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

戻り値:
マネージャのコンフィギュレーション

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

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

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

引数:
proc 初期化プロシージャの関数ポインタ

bool RTC::Manager::activateManager (  ) 

Managerのアクティブ化

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

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

戻り値:
処理結果(アクティブ化成功:true、失敗:false)

void RTC::Manager::runManager ( bool  no_block = false  ) 

Managerの実行

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

引数:
no_block false: ブロッキングモード, true: ノンブロッキングモード

void RTC::Manager::load ( const char *  fname,
const char *  initfunc 
)

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

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

引数:
fname モジュールファイル名
initfunc 初期化関数名

void RTC::Manager::unload ( const char *  fname  ) 

モジュールのアンロード

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

引数:
fname モジュールのファイル名

void RTC::Manager::unloadAll (  ) 

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

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

std::vector<coil::Properties> RTC::Manager::getLoadedModules (  ) 

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

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

戻り値:
ロード済みモジュールリスト

std::vector<coil::Properties> RTC::Manager::getLoadableModules (  ) 

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

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

戻り値:
ロード可能モジュール リスト

bool RTC::Manager::registerFactory ( coil::Properties &  profile,
RtcNewFunc  new_func,
RtcDeleteFunc  delete_func 
)

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

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

引数:
profile RTコンポーネント プロファイル
new_func RTコンポーネント生成用関数
delete_func RTコンポーネント破棄用関数
戻り値:
登録処理結果(登録成功:true、失敗:false)

std::vector<coil::Properties> RTC::Manager::getFactoryProfiles (  ) 

bool RTC::Manager::registerECFactory ( const char *  name,
ECNewFunc  new_func,
ECDeleteFunc  delete_func 
)

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

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

引数:
name 生成対象ExecutionContext名称
new_func ExecutionContext生成用関数
delete_func ExecutionContext破棄用関数
戻り値:
登録処理結果(登録成功:true、失敗:false)

std::vector<std::string> RTC::Manager::getModulesFactories (  ) 

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

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

戻り値:
登録ファクトリ リスト

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. コードに埋め込まれたプロファイル

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

引数:
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  ) 

void RTC::Manager::cleanupComponent ( RTObject_impl comp  ) 

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

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

引数:
comp 登録解除対象RTコンポーネント

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

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

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

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

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

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

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

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

void RTC::Manager::deleteComponent ( const char *  instance_name  ) 

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

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

引数:
instance_name 削除対象RTコンポーネントのインスタンス名

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コンポーネントのインスタンスリスト

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

ORB のポインタを取得する

Manager に設定された ORB のポインタを取得する。

戻り値:
ORB オブジェクト

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

Manager が持つ RootPOA のポインタを取得する

Manager に設定された RootPOA へのポインタを取得する。

戻り値:
RootPOAオブジェクト

PortableServer::POAManager_ptr RTC::Manager::getPOAManager (  ) 

Manager が持つ POAManager を取得する

Manager に設定された POAMAnager を取得する。

戻り値:
POAマネージャ

void RTC::Manager::initManager ( int  argc,
char **  argv 
) [protected]

Manager の内部初期化処理

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

引数:
argc コマンドライン引数の数
argv コマンドライン引数

void RTC::Manager::shutdownManager (  )  [protected]

Manager の終了処理

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

bool RTC::Manager::initLogger (  )  [protected]

System logger の初期化

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

戻り値:
初期化実行結果(初期化成功:true、初期化失敗:false)

void RTC::Manager::shutdownLogger (  )  [protected]

System Logger の終了処理

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

bool RTC::Manager::initORB (  )  [protected]

CORBA ORB の初期化処理

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

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

std::string RTC::Manager::createORBOptions (  )  [protected]

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

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

戻り値:
ORB 起動時オプション

void RTC::Manager::shutdownORB (  )  [protected]

ORB の終了処理

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

bool RTC::Manager::initNaming (  )  [protected]

NamingManager の初期化

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

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

void RTC::Manager::shutdownNaming (  )  [protected]

NamingManager の終了処理

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

void RTC::Manager::shutdownComponents (  )  [protected]

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

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

bool RTC::Manager::procComponentArgs ( const char *  comp_arg,
coil::Properties &  comp_id,
coil::Properties &  comp_conf 
) [protected]

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

文字列からコンポーネント型とコンポーネントのプロパティを抽出する。 与えられる文字列のフォーマットは [RTC type]?[key(0)]=[val(0)]&[key(1)]=[val(1)]...[key(n)]=[val(n)]

戻り値:
comp_arg にコンポーネント型が含まれていない場合false
引数:
comp_arg 処理すべき文字列
comp_type 抽出されたコンポーネントの型名
comp_prop 抽出されたコンポーネントのプロパティ

bool RTC::Manager::procContextArgs ( const char *  ec_args,
std::string &  ec_id,
coil::Properties &  ec_conf 
) [protected]

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

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

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

引数:
comp コンフィギュレーション対象RTコンポーネント

bool RTC::Manager::initExecContext (  )  [protected]

ExecutionContextManager の初期化

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

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

bool RTC::Manager::initComposite (  )  [protected]

bool RTC::Manager::initFactories (  )  [protected]

bool RTC::Manager::initTimer (  )  [protected]

Timer の初期化

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

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

bool RTC::Manager::initManagerServant (  )  [protected]

bool RTC::Manager::mergeProperty ( coil::Properties &  prop,
const char *  file_name 
) [protected]

プロパティ情報のマージ

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

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

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

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

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

引数:
naming_format NamingService 登録情報書式指定
prop 使用するプロパティ情報
戻り値:
指定書式変換結果


変数

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

Manager* RTC::Manager::manager [static, protected]

唯一の Manager へのポインタ

Mutex RTC::Manager::mutex [static, protected]

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

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 へのポインタ

ModuleInitProc RTC::Manager::m_initProc [protected]

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

coil::Properties RTC::Manager::m_config [protected]

Manager の configuration を格納する Properties

ModuleManager* RTC::Manager::m_module [protected]

ModuleManager へのポインタ

NamingManager* RTC::Manager::m_namingManager [protected]

NamingManager へのポインタ

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

Timer Object

LogStreamBuf RTC::Manager::m_logStreamBuf [protected]

ロガーバッファ

Logger RTC::Manager::rtclog [protected]

ロガーストリーム

std::vector<std::ofstream*> RTC::Manager::m_logfiles [protected]

ComponentManager RTC::Manager::m_compManager [protected]

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

FactoryManager RTC::Manager::m_factory [protected]

ComponentManager

ECFactoryManager RTC::Manager::m_ecfactory [protected]

ExecutionContext マネージャ

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

ExecutionContext リスト

OrbRunner* RTC::Manager::m_runner [protected]

Terminator* RTC::Manager::m_terminator [protected]

Terminator

Term RTC::Manager::m_terminate [protected]


OpenRTMに対してSun May 24 14:08:26 2009に生成されました。  doxygen 1.5.3