ModuleManager class. More...
#include <ModuleManager.h>
Classes | |
struct | DLLEntity |
Structure for DLL management. More... | |
class | DllPred |
Module list that has already loaded. More... | |
struct | Error |
Structure for exception handling when file open is failed. More... | |
struct | FileNotFound |
Structure for exception handling when specified file cannot be found. More... | |
struct | InvalidArguments |
Structure for exception handling when specified argument is invalid. More... | |
struct | InvalidOperation |
Structure for exception handling when specified operation is invalid. More... | |
struct | ModuleNotFound |
Structure for exception handling when specified module cannot be found. More... | |
struct | NotAllowedOperation |
Structure for exception handling when specified operation cannot be allowed. More... | |
struct | NotFound |
Structure for exception handling of unimplemented part and specified module missing. More... | |
struct | SymbolNotFound |
Structure for exception handling when specified symbol cannot be found. More... | |
class | UnloadPred |
Module unloading functor. More... | |
Public Types | |
typedef void(* | ModuleInitFunc )(Manager *) |
Public Member Functions | |
ModuleManager (coil::Properties &prop) | |
Constructor. | |
~ModuleManager (void) | |
Destructor. | |
std::string | load (const std::string &file_name) |
Load the module. | |
std::string | load (const std::string &file_name, const std::string &init_func) |
Load and intialize the module. | |
void | unload (const std::string &file_name) |
Unload the module. | |
void | unloadAll () |
Unload all modules. | |
void * | symbol (const std::string &file_name, const std::string &func_name) throw (ModuleNotFound, SymbolNotFound) |
Refer to the symbol of the module. | |
void | setLoadpath (const std::vector< std::string > &load_path) |
Set the module load path. | |
std::vector< std::string > | getLoadPath () |
Get the module load path. | |
void | addLoadpath (const std::vector< std::string > &load_path) |
Add the module load path. | |
std::vector< coil::Properties > | getLoadedModules () |
Get the module list that has been loaded. | |
std::vector< coil::Properties > | getLoadableModules () |
Get the loadable module list. | |
void | allowAbsolutePath () |
Allow absolute path when specify module path. | |
void | disallowAbsolutePath () |
Disallow absolute path when specify module path. | |
void | allowModuleDownload () |
Allow URL when specify module path. | |
void | disallowModuleDownload () |
Disallow URL when specify module path. | |
std::string | findFile (const std::string &fname, const std::vector< std::string > &load_path) |
Search the file from the LoadPath. | |
bool | fileExist (const std::string &filename) |
Check whether the file exists. | |
std::string | getInitFuncName (const std::string &file_path) |
Create initialization function symbol. | |
Protected Types | |
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 Member Functions | |
void | removeInvalidModules () |
Removing incalid module profiles. | |
void | getModuleList (const std::string &lang, coil::vstring &modules) |
Getting loadable file list on the loadpath for given language. | |
void | addNewFile (const std::string &fpath, coil::vstring &modules) |
Adding file path not existing cache. | |
void | getModuleProfiles (const std::string &lang, const coil::vstring &modules, vProperties &modprops) |
Getting module properties from given language and file list. | |
Protected Attributes | |
Logger | rtclog |
Logger stream. | |
coil::Properties & | m_properties |
Module Manager properties. | |
ObjectManager< const char *, DLLEntity, DllPred > | m_modules |
Module list that has already loaded. | |
StringVector | m_loadPath |
Module load path list. | |
StringVector | m_configPath |
Configuration path list. | |
bool | m_downloadAllowed |
Flag of URL when specify module for the load. | |
bool | m_absoluteAllowed |
Flag of absolute path when specify module for the load. | |
std::string | m_initFuncSuffix |
Initial execution function suffix. | |
std::string | m_initFuncPrefix |
Initial execution function prefix. | |
vProperties | m_modprofs |
ModuleManager class.
This is a class to manage for loading and unloading modules.
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 | ) |
Constructor.
Constructor. Initialize based on information in the set Property object.
prop | Properties for initialization |
RTC::ModuleManager::~ModuleManager | ( | void | ) |
Destructor.
void RTC::ModuleManager::addLoadpath | ( | const std::vector< std::string > & | load_path | ) |
Add the module load path.
Add specified path list to search path list.
void RTC::ModuleManager::addNewFile | ( | const std::string & | fpath, | |
coil::vstring & | modules | |||
) | [protected] |
Adding file path not existing cache.
void RTC::ModuleManager::allowAbsolutePath | ( | ) | [inline] |
Allow absolute path when specify module path.
Set to allow the absolute path when specify the module for the load.
References m_absoluteAllowed.
void RTC::ModuleManager::allowModuleDownload | ( | ) | [inline] |
Allow URL when specify module path.
Allow URL when specify module for the load. When this setup is allowed, downloading and loading the module will be allowed.
References m_downloadAllowed.
void RTC::ModuleManager::disallowAbsolutePath | ( | ) | [inline] |
Disallow absolute path when specify module path.
Set to disallow the absolute path when specify the module for the load.
References m_absoluteAllowed.
void RTC::ModuleManager::disallowModuleDownload | ( | ) | [inline] |
Disallow URL when specify module path.
Disallow URL when specify module for the load.
References m_downloadAllowed.
bool RTC::ModuleManager::fileExist | ( | const std::string & | filename | ) |
Check whether the file exists.
Check whether the specified file exists.
filename | Name of file existence for checking |
std::string RTC::ModuleManager::findFile | ( | const std::string & | fname, | |
const std::vector< std::string > & | load_path | |||
) |
Search the file from the LoadPath.
Check whether the specified file exists in the specified path.
fname | Target file name of the search | |
load_path | Path list for the search |
std::string RTC::ModuleManager::getInitFuncName | ( | const std::string & | file_path | ) |
Create initialization function symbol.
Assemble names of the initialization functions.
file_path | Name of module for initialization |
std::vector<coil::Properties> RTC::ModuleManager::getLoadableModules | ( | ) |
Get the loadable module list.
Get the loadable module list (not implemented).
std::vector<coil::Properties> RTC::ModuleManager::getLoadedModules | ( | ) |
Get the module list that has been loaded.
Get the module list that has been loaded.
std::vector<std::string> RTC::ModuleManager::getLoadPath | ( | ) | [inline] |
Get the module load path.
Get the search path of the set module.
References m_loadPath.
void RTC::ModuleManager::getModuleList | ( | const std::string & | lang, | |
coil::vstring & | modules | |||
) | [protected] |
Getting loadable file list on the loadpath for given language.
void RTC::ModuleManager::getModuleProfiles | ( | const std::string & | lang, | |
const coil::vstring & | modules, | |||
vProperties & | modprops | |||
) | [protected] |
Getting module properties from given language and file list.
std::string RTC::ModuleManager::load | ( | const std::string & | file_name, | |
const std::string & | init_func | |||
) |
Load and intialize the module.
Load the specified file as DLL or a shared library, and execute operation for specified initialization.
file_name | The target module name for the loading | |
init_func | Operation for initialization |
std::string RTC::ModuleManager::load | ( | const std::string & | file_name | ) |
Load the module.
Load file_name as DLL or a shared liblary. The file_name is specified by the relative path to default load path (manager.modules.load_path).
If Property manager.modules.abs_path_allowed is yes, the load module can be specified by the absolute path.
If Property manager.modules.download_allowed is yes, the load module can be specified with URL.
The file_name can be specified by the absolute path. If manager.modules.allowAbsolutePath is no, module of file_name will be searched from the default module load path and loaded.
file_name | The target module name for the loading |
void RTC::ModuleManager::removeInvalidModules | ( | ) | [protected] |
Removing incalid module profiles.
void RTC::ModuleManager::setLoadpath | ( | const std::vector< std::string > & | load_path | ) |
Set the module load path.
Specify searching path to find the target module when loading module.
load_path | List of module search path |
void* RTC::ModuleManager::symbol | ( | const std::string & | file_name, | |
const std::string & | func_name | |||
) | throw (ModuleNotFound, SymbolNotFound) |
Refer to the symbol of the module.
void RTC::ModuleManager::unload | ( | const std::string & | file_name | ) |
Unload the module.
Close and unload the specified module that has been loaded.
file_name | Name of module for the unloading |
void RTC::ModuleManager::unloadAll | ( | ) |
Unload all modules.
Unload all modules that have been loaded.
bool RTC::ModuleManager::m_absoluteAllowed [protected] |
Flag of absolute path when specify module for the load.
Referenced by allowAbsolutePath(), and disallowAbsolutePath().
StringVector RTC::ModuleManager::m_configPath [protected] |
Configuration path list.
bool RTC::ModuleManager::m_downloadAllowed [protected] |
Flag of URL when specify module for the load.
Referenced by allowModuleDownload(), and disallowModuleDownload().
std::string RTC::ModuleManager::m_initFuncPrefix [protected] |
Initial execution function prefix.
std::string RTC::ModuleManager::m_initFuncSuffix [protected] |
Initial execution function suffix.
StringVector RTC::ModuleManager::m_loadPath [protected] |
Module load path list.
Referenced by getLoadPath().
vProperties RTC::ModuleManager::m_modprofs [protected] |
ObjectManager<const char*, DLLEntity, DllPred> RTC::ModuleManager::m_modules [protected] |
Module list that has already loaded.
coil::Properties& RTC::ModuleManager::m_properties [protected] |
Module Manager properties.
Logger RTC::ModuleManager::rtclog [protected] |
Logger stream.