20#ifndef RTC_MODULEMANAGER_H
21#define RTC_MODULEMANAGER_H
25#include <coil/DynamicLib.h>
29#include <coil/Properties.h>
38#define CONFIG_EXT "manager.modules.config_ext"
39#define CONFIG_PATH "manager.modules.config_path"
40#define DETECT_MOD "manager.modules.detect_loadable"
41#define MOD_LOADPTH "manager.modules.load_path"
42#define INITFUNC_SFX "manager.modules.init_func_suffix"
43#define INITFUNC_PFX "manager.modules.init_func_prefix"
44#define ALLOW_ABSPATH "manager.modules.abs_path_allowed"
45#define ALLOW_URL "manager.modules.download_allowed"
46#define MOD_DWNDIR "manager.modules.download_dir"
47#define MOD_DELMOD "manager.modules.download_cleanup"
48#define MOD_PRELOAD "manager.modules.preload"
73 using vProperties = std::vector<coil::Properties>;
121 :
reason(std::move(_reason)) {}
136 :
name(std::move(_name)) {}
276 std::string
load(
const std::string& file_name);
305 std::string
load(
const std::string& file_name,
306 const std::string& init_func);
325 void unload(
const std::string& file_name);
349 void*
symbol(
const std::string& file_name,
const std::string& func_name);
550 const std::vector<std::string>& load_path);
624 void addNewFile(
const std::string& fpath, coil::vstring& modules,
const std::string& lang);
634 const coil::vstring& modules, vProperties& modprops);
685 std::string m_filepath;
687 explicit DllPred(
const char* filepath) : m_filepath(filepath) {}
689 : m_filepath(dll->properties[
"file_path"]) {}
692 return m_filepath == dllentity->
properties.getProperty(
"file_path");
オブジェクト管理用クラス
Definition ObjectManager.h:52
Logger クラス
Definition SystemLogger.h:101
Manager クラス
Definition Manager.h:91
ロード済みモジュールリスト
Definition ModuleManager.h:684
DllPred(const char *filepath)
Definition ModuleManager.h:687
DllPred(const DLLEntity *dll)
Definition ModuleManager.h:688
bool operator()(DLLEntity *dllentity)
Definition ModuleManager.h:690
モジュールアンロードファンクタ
Definition ModuleManager.h:772
void operator()(DLLEntity *dll)
Definition ModuleManager.h:775
モジュールマネージャクラス
Definition ModuleManager.h:72
void(*)(Manager *) ModuleInitFunc
Definition ModuleManager.h:229
StringVector m_loadPath
モジュール・ロード・パス・リスト
Definition ModuleManager.h:711
std::string m_initFuncPrefix
初期実行関数プリフィックス
Definition ModuleManager.h:753
void addLoadpath(const std::vector< std::string > &load_path)
モジュールロードパスを追加する
std::string load(const std::string &file_name)
モジュールのロード
StringVector::iterator StringVectorItr
Definition ModuleManager.h:659
void disallowAbsolutePath()
モジュールの絶対パス指定禁止
Definition ModuleManager.h:481
void unload(const std::string &file_name)
モジュールのアンロード
void * symbol(const std::string &file_name, const std::string &func_name)
モジュールのシンボルの参照
std::map< std::string, coil::vstring > m_loadfailmods
Definition ModuleManager.h:783
ObjectManager< const char *, DLLEntity, DllPred > m_modules
ロード済みモジュールリスト
Definition ModuleManager.h:702
ModuleManager(coil::Properties &prop)
コンストラクタ
std::vector< std::string > getLoadPath()
モジュールロードパスを取得する
Definition ModuleManager.h:387
void allowAbsolutePath()
モジュールの絶対パス指定許可
Definition ModuleManager.h:463
std::vector< coil::Properties > getLoadedModules()
ロード済みのモジュールリストを取得する
coil::vstring m_supported_languages
サポートするRTCの実装言語
Definition ModuleManager.h:762
std::string load(const std::string &file_name, const std::string &init_func)
モジュールのロード、初期化
void getModuleProfiles(const std::string &lang, const coil::vstring &modules, vProperties &modprops)
指定言語、ファイルリストからモジュールのプロパティを返す
std::vector< DLLEntity > DllMap
Definition ModuleManager.h:662
DllMap::iterator DllMapItr
Definition ModuleManager.h:663
void disallowModuleDownload()
モジュールのURL指定禁止
Definition ModuleManager.h:521
std::string findFile(const std::string &fname, const std::vector< std::string > &load_path)
LoadPath からのファイルの検索
void removeInvalidModules()
無効なモジュールプロファイルを削除する
std::string getInitFuncName(const std::string &file_path)
初期化関数シンボルを生成する
bool m_absoluteAllowed
モジュール絶対パス指定許可フラグ
Definition ModuleManager.h:735
void addNewFile(const std::string &fpath, coil::vstring &modules, const std::string &lang)
キャッシュに無いパスだけmodulesに追加する
void allowModuleDownload()
モジュールのURL指定許可
Definition ModuleManager.h:503
void unloadAll()
全モジュールのアンロード
DllMap::const_iterator DllMapConstItr
Definition ModuleManager.h:664
std::vector< coil::Properties > getLoadableModules()
ロード可能モジュールリストを取得する
void setLoadpath(const std::vector< std::string > &load_path)
モジュールロードパスを指定する
coil::Properties & m_properties
Module Manager プロパティ
Definition ModuleManager.h:674
void getModuleList(const std::string &lang, coil::vstring &modules)
指定言語におけるロードパス上のローダブルなファイルリストを返す
bool m_downloadAllowed
モジュールURL指定許可フラグ
Definition ModuleManager.h:727
bool fileExist(const std::string &filename)
ファイルが存在するかどうかのチェック
StringVector::const_iterator StringVectorConstItr
Definition ModuleManager.h:660
std::string m_initFuncSuffix
初期実行関数サフィックス
Definition ModuleManager.h:744
StringVector m_configPath
コンフィギュレーション・パス・リスト
Definition ModuleManager.h:719
vProperties m_modprofs
Definition ModuleManager.h:782
std::vector< std::string > StringVector
Definition ModuleManager.h:658
Logger rtclog
ロガーストリーム
Definition ModuleManager.h:643
DLL管理用構造体
Definition ModuleManager.h:653
coil::Properties properties
Definition ModuleManager.h:654
coil::DynamicLib dll
Definition ModuleManager.h:655
ファイル・オープン失敗例外処理用構造体
Definition ModuleManager.h:119
std::string reason
Definition ModuleManager.h:122
Error(std::string _reason)
Definition ModuleManager.h:120
指定ファイル不明例外処理用構造体
Definition ModuleManager.h:150
FileNotFound(const std::string &_name)
Definition ModuleManager.h:151
指定引数不正時例外処理用構造体
Definition ModuleManager.h:210
InvalidArguments(const std::string &_reason)
Definition ModuleManager.h:211
指定操作不正時例外処理用構造体
Definition ModuleManager.h:225
InvalidOperation(const std::string &_reason)
Definition ModuleManager.h:226
指定モジュール不明例外処理用構造体
Definition ModuleManager.h:165
ModuleNotFound(const std::string &_name)
Definition ModuleManager.h:166
指定操作禁止時例外処理用構造体
Definition ModuleManager.h:195
NotAllowedOperation(const std::string &_reason)
Definition ModuleManager.h:196
未実装部,指定モジュール不明例外処理用構造体
Definition ModuleManager.h:134
std::string name
Definition ModuleManager.h:137
NotFound(std::string _name)
Definition ModuleManager.h:135
指定シンボル不明例外処理用構造体
Definition ModuleManager.h:180
SymbolNotFound(const std::string &_name)
Definition ModuleManager.h:181