モジュールマネージャクラス [詳細]
#include <ModuleManager.h>
構成 | |
struct | DLLEntity |
DLL管理用構造体. [詳細] | |
class | DllPred |
ロード済みモジュールリスト [詳細] | |
struct | Error |
ファイル・オープン失敗例外処理用構造体 [詳細] | |
struct | FileNotFound |
指定ファイル不明例外処理用構造体 [詳細] | |
struct | InvalidArguments |
指定引数不正時例外処理用構造体 [詳細] | |
struct | InvalidOperation |
指定操作不正時例外処理用構造体 [詳細] | |
struct | ModuleNotFound |
指定モジュール不明例外処理用構造体 [詳細] | |
struct | NotAllowedOperation |
指定操作禁止時例外処理用構造体 [詳細] | |
struct | NotFound |
未実装部,指定モジュール不明例外処理用構造体 [詳細] | |
struct | SymbolNotFound |
指定シンボル不明例外処理用構造体 [詳細] | |
class | UnloadPred |
モジュールアンロードファンクタ [詳細] | |
Public 型 | |
typedef void(* | ModuleInitFunc )(Manager *) |
Public メソッド | |
ModuleManager (coil::Properties &prop) | |
コンストラクタ | |
~ModuleManager (void) | |
デストラクタ | |
std::string | load (const std::string &file_name) |
モジュールのロード | |
std::string | load (const std::string &file_name, const std::string &init_func) |
モジュールのロード、初期化 | |
void | unload (const std::string &file_name) |
モジュールのアンロード | |
void | unloadAll () |
全モジュールのアンロード | |
void * | symbol (const std::string &file_name, const std::string &func_name) throw (ModuleNotFound, SymbolNotFound) |
モジュールのシンボルの参照 | |
void | setLoadpath (const std::vector< std::string > &load_path) |
モジュールロードパスを指定する | |
std::vector< std::string > | getLoadPath () |
モジュールロードパスを取得する | |
void | addLoadpath (const std::vector< std::string > &load_path) |
モジュールロードパスを追加する | |
std::vector< coil::Properties > | getLoadedModules () |
ロード済みのモジュールリストを取得する | |
std::vector< coil::Properties > | getLoadableModules () |
ロード可能モジュールリストを取得する | |
void | allowAbsolutePath () |
モジュールの絶対パス指定許可 | |
void | disallowAbsolutePath () |
モジュールの絶対パス指定禁止 | |
void | allowModuleDownload () |
モジュールのURL指定許可 | |
void | disallowModuleDownload () |
モジュールのURL指定禁止 | |
std::string | findFile (const std::string &fname, const std::vector< std::string > &load_path) |
LoadPath からのファイルの検索. | |
bool | fileExist (const std::string &filename) |
ファイルが存在するかどうかのチェック | |
std::string | getInitFuncName (const std::string &file_path) |
初期化関数シンボルを生成する | |
Protected 型 | |
typedef std::vector< std::string > | StringVector |
typedef StringVector::iterator | StringVectorItr |
typedef StringVector::const_iterator | StringVectorConstItr |
typedef std::vector< DLLEntity > | DllMap |
typedef DllMap::iterator | DllMapItr |
typedef DllMap::const_iterator | DllMapConstItr |
Protected メソッド | |
void | removeInvalidModules () |
無効なモジュールプロファイルを削除する | |
void | getModuleList (const std::string &lang, coil::vstring &modules) |
指定言語におけるロードパス上のローダブルなファイルリストを返す | |
void | addNewFile (const std::string &fpath, coil::vstring &modules) |
キャッシュに無いパスだけmodulesに追加する | |
void | getModuleProfiles (const std::string &lang, const coil::vstring &modules, vProperties &modprops) |
指定言語、ファイルリストからモジュールのプロパティを返す | |
Protected 変数 | |
Logger | rtclog |
ロガーストリーム | |
coil::Properties & | m_properties |
Module Manager プロパティ. | |
ObjectManager< const char *, DLLEntity, DllPred > | m_modules |
ロード済みモジュールリスト | |
StringVector | m_loadPath |
モジュール・ロード・パス・リスト | |
StringVector | m_configPath |
コンフィギュレーション・パス・リスト | |
bool | m_downloadAllowed |
モジュールURL指定許可フラグ | |
bool | m_absoluteAllowed |
モジュール絶対パス指定許可フラグ | |
std::string | m_initFuncSuffix |
初期実行関数サフィックス | |
std::string | m_initFuncPrefix |
初期実行関数プリフィックス | |
vProperties | m_modprofs |
モジュールマネージャクラス
モジュールのロード、アンロードなどを管理するクラス
typedef std::vector<DLLEntity> RTC::ModuleManager::DllMap [protected] |
typedef DllMap::const_iterator RTC::ModuleManager::DllMapConstItr [protected] |
typedef DllMap::iterator RTC::ModuleManager::DllMapItr [protected] |
typedef void(* RTC::ModuleManager::ModuleInitFunc)(Manager *) |
typedef std::vector<std::string> RTC::ModuleManager::StringVector [protected] |
typedef StringVector::const_iterator RTC::ModuleManager::StringVectorConstItr [protected] |
typedef StringVector::iterator RTC::ModuleManager::StringVectorItr [protected] |
RTC::ModuleManager::ModuleManager | ( | coil::Properties & | prop | ) |
コンストラクタ
コンストラクタ。 設定された Property オブジェクト内の情報を基に初期化を実行する。
prop | 初期化用プロパティ |
RTC::ModuleManager::~ModuleManager | ( | void | ) |
デストラクタ
void RTC::ModuleManager::addLoadpath | ( | const std::vector< std::string > & | load_path | ) |
モジュールロードパスを追加する
指定されたパスリストを検索対象パスリストに追加する。
void RTC::ModuleManager::addNewFile | ( | const std::string & | fpath, | |
coil::vstring & | modules | |||
) | [protected] |
キャッシュに無いパスだけmodulesに追加する
void RTC::ModuleManager::allowAbsolutePath | ( | ) | [inline] |
void RTC::ModuleManager::allowModuleDownload | ( | ) | [inline] |
モジュールのURL指定許可
ロード対象モジュールのURL指定を許可する。 本設定が許可されている場合、モジュールをダウンロードしてロードすることが 許可される。
参照先 m_downloadAllowed.
void RTC::ModuleManager::disallowAbsolutePath | ( | ) | [inline] |
void RTC::ModuleManager::disallowModuleDownload | ( | ) | [inline] |
bool RTC::ModuleManager::fileExist | ( | const std::string & | filename | ) |
ファイルが存在するかどうかのチェック
指定されたファイルが存在するか確認する。
filename | 存在確認対象ファイル名 |
std::string RTC::ModuleManager::findFile | ( | const std::string & | fname, | |
const std::vector< std::string > & | load_path | |||
) |
LoadPath からのファイルの検索.
指定されたパス内に、指定されたファイルが存在するか確認する。
fname | 検索対象ファイル名 | |
load_path | 検索先パスリスト |
std::string RTC::ModuleManager::getInitFuncName | ( | const std::string & | file_path | ) |
初期化関数シンボルを生成する
初期化関数の名称を組み立てる。
file_path | 初期化対象モジュール名称 |
std::vector<coil::Properties> RTC::ModuleManager::getLoadableModules | ( | ) |
ロード可能モジュールリストを取得する
ロード可能なモジュールのリストを取得する。 (未実装)
std::vector<coil::Properties> RTC::ModuleManager::getLoadedModules | ( | ) |
ロード済みのモジュールリストを取得する
既にロード済みのモジュールリストを取得する。
std::vector<std::string> RTC::ModuleManager::getLoadPath | ( | ) | [inline] |
void RTC::ModuleManager::getModuleList | ( | const std::string & | lang, | |
coil::vstring & | modules | |||
) | [protected] |
指定言語におけるロードパス上のローダブルなファイルリストを返す
void RTC::ModuleManager::getModuleProfiles | ( | const std::string & | lang, | |
const coil::vstring & | modules, | |||
vProperties & | modprops | |||
) | [protected] |
指定言語、ファイルリストからモジュールのプロパティを返す
std::string RTC::ModuleManager::load | ( | const std::string & | file_name, | |
const std::string & | init_func | |||
) |
モジュールのロード、初期化
指定したファイルをDLL もしくは共有ライブラリとしてロードするとともに、 指定した初期化用オペレーションを実行する。
file_name | ロード対象モジュール名 | |
init_func | 初期化処理用オペレーション |
std::string RTC::ModuleManager::load | ( | const std::string & | file_name | ) |
モジュールのロード
file_name をDLL もしくは共有ライブラリとしてロードする。 file_name は既定のロードパス (manager.modules.load_path) に対する 相対パスで指定する。
Property manager.modules.abs_path_allowed が yes の場合、 ロードするモジュールを絶対パスで指定することができる。
Property manager.modules.download_allowed が yes の場合、 ロードするモジュールをURLで指定することができる。
file_name は絶対パスで指定することができる。 manager.modules.allowAbsolutePath が no の場合、 既定のモジュールロードパスから、file_name のモジュールを探しロードする。
file_name | ロード対象モジュール名 |
void RTC::ModuleManager::removeInvalidModules | ( | ) | [protected] |
無効なモジュールプロファイルを削除する
void RTC::ModuleManager::setLoadpath | ( | const std::vector< std::string > & | load_path | ) |
モジュールロードパスを指定する
モジュールロード時に対象モジュールを検索するパスを指定する。
load_path | モジュール検索対象パスリスト |
void* RTC::ModuleManager::symbol | ( | const std::string & | file_name, | |
const std::string & | func_name | |||
) | throw (ModuleNotFound, SymbolNotFound) |
モジュールのシンボルの参照
void RTC::ModuleManager::unload | ( | const std::string & | file_name | ) |
モジュールのアンロード
指定したロード済みモジュールをクローズし、アンロードする。
file_name | アンロード対象モジュール名 |
void RTC::ModuleManager::unloadAll | ( | ) |
全モジュールのアンロード
全てのロード済みモジュールをアンロードする。
bool RTC::ModuleManager::m_absoluteAllowed [protected] |
モジュール絶対パス指定許可フラグ
StringVector RTC::ModuleManager::m_configPath [protected] |
コンフィギュレーション・パス・リスト
bool RTC::ModuleManager::m_downloadAllowed [protected] |
モジュールURL指定許可フラグ
std::string RTC::ModuleManager::m_initFuncPrefix [protected] |
初期実行関数プリフィックス
std::string RTC::ModuleManager::m_initFuncSuffix [protected] |
初期実行関数サフィックス
StringVector RTC::ModuleManager::m_loadPath [protected] |
モジュール・ロード・パス・リスト
参照元 getLoadPath().
vProperties RTC::ModuleManager::m_modprofs [protected] |
ObjectManager<const char*, DLLEntity, DllPred> RTC::ModuleManager::m_modules [protected] |
ロード済みモジュールリスト
coil::Properties& RTC::ModuleManager::m_properties [protected] |
Module Manager プロパティ.
Logger RTC::ModuleManager::rtclog [protected] |
ロガーストリーム