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 | |
void | addLoadpath (const std::vector< std::string > &load_path) |
Add the module load path. More... | |
void | allowAbsolutePath () |
Allow absolute path when specify module path. More... | |
void | allowModuleDownload () |
Allow URL when specify module path. More... | |
void | disallowAbsolutePath () |
Disallow absolute path when specify module path. More... | |
void | disallowModuleDownload () |
Disallow URL when specify module path. More... | |
bool | fileExist (const std::string &filename) |
Check whether the file exists. More... | |
std::string | findFile (const std::string &fname, const std::vector< std::string > &load_path) |
Search the file from the LoadPath. More... | |
std::string | getInitFuncName (const std::string &file_path) |
Create initialization function symbol. More... | |
std::vector< coil::Properties > | getLoadableModules () |
Get the loadable module list. More... | |
std::vector< coil::Properties > | getLoadedModules () |
Get the module list that has been loaded. More... | |
std::vector< std::string > | getLoadPath () |
Get the module load path. More... | |
std::string | load (const std::string &file_name) |
Load the module. More... | |
std::string | load (const std::string &file_name, const std::string &init_func) |
Load and intialize the module. More... | |
ModuleManager (coil::Properties &prop) | |
Constructor. More... | |
void | setLoadpath (const std::vector< std::string > &load_path) |
Set the module load path. More... | |
void * | symbol (const std::string &file_name, const std::string &func_name) throw (ModuleNotFound, SymbolNotFound) |
Refer to the symbol of the module. More... | |
void | unload (const std::string &file_name) |
Unload the module. More... | |
void | unloadAll () |
Unload all modules. More... | |
~ModuleManager (void) | |
Destructor. More... | |
Protected Types | |
typedef std::vector< DLLEntity > | DllMap |
typedef DllMap::const_iterator | DllMapConstItr |
typedef DllMap::iterator | DllMapItr |
typedef std::vector< std::string > | StringVector |
typedef StringVector::const_iterator | StringVectorConstItr |
typedef StringVector::iterator | StringVectorItr |
Protected Member Functions | |
void | addNewFile (const std::string &fpath, coil::vstring &modules) |
Adding file path not existing cache. More... | |
void | getModuleList (const std::string &lang, coil::vstring &modules) |
Getting loadable file list on the loadpath for given language. More... | |
void | getModuleProfiles (const std::string &lang, const coil::vstring &modules, vProperties &modprops) |
Getting module properties from given language and file list. More... | |
void | removeInvalidModules () |
Removing incalid module profiles. More... | |
Protected Attributes | |
bool | m_absoluteAllowed |
Flag of absolute path when specify module for the load. More... | |
StringVector | m_configPath |
Configuration path list. More... | |
bool | m_downloadAllowed |
Flag of URL when specify module for the load. More... | |
std::string | m_initFuncPrefix |
Initial execution function prefix. More... | |
std::string | m_initFuncSuffix |
Initial execution function suffix. More... | |
StringVector | m_loadPath |
Module load path list. More... | |
vProperties | m_modprofs |
ObjectManager< const char *, DLLEntity, DllPred > | m_modules |
Module list that has already loaded. More... | |
coil::Properties & | m_properties |
Module Manager properties. More... | |
Logger | rtclog |
Logger stream. More... | |
Private Types | |
typedef std::vector< coil::Properties > | vProperties |
ModuleManager class.
This is a class to manage for loading and unloading modules.
Definition at line 74 of file ModuleManager.h.
|
protected |
Definition at line 666 of file ModuleManager.h.
|
protected |
Definition at line 668 of file ModuleManager.h.
|
protected |
Definition at line 667 of file ModuleManager.h.
typedef void(* RTC::ModuleManager::ModuleInitFunc) (Manager *) |
Definition at line 232 of file ModuleManager.h.
|
protected |
Definition at line 662 of file ModuleManager.h.
|
protected |
Definition at line 664 of file ModuleManager.h.
|
protected |
Definition at line 663 of file ModuleManager.h.
|
private |
Definition at line 76 of file ModuleManager.h.
RTC::ModuleManager::ModuleManager | ( | coil::Properties & | prop | ) |
Constructor.
Constructor. Initialize based on information in the set Property object.
prop | Properties for initialization |
Definition at line 46 of file ModuleManager.cpp.
RTC::ModuleManager::~ModuleManager | ( | void | ) |
Destructor.
Definition at line 66 of file ModuleManager.cpp.
void RTC::ModuleManager::addLoadpath | ( | const std::vector< std::string > & | load_path | ) |
Add the module load path.
Add specified path list to search path list.
Definition at line 279 of file ModuleManager.cpp.
|
protected |
Adding file path not existing cache.
Definition at line 506 of file ModuleManager.cpp.
|
inline |
Allow absolute path when specify module path.
Set to allow the absolute path when specify the module for the load.
Definition at line 467 of file ModuleManager.h.
|
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.
Definition at line 507 of file ModuleManager.h.
|
inline |
Disallow absolute path when specify module path.
Set to disallow the absolute path when specify the module for the load.
Definition at line 485 of file ModuleManager.h.
|
inline |
Disallow URL when specify module path.
Disallow URL when specify module for the load.
Definition at line 525 of file ModuleManager.h.
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 |
Definition at line 390 of file ModuleManager.cpp.
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 |
Definition at line 359 of file ModuleManager.cpp.
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 |
Definition at line 417 of file ModuleManager.cpp.
std::vector< coil::Properties > RTC::ModuleManager::getLoadableModules | ( | ) |
Get the loadable module list.
Get the loadable module list(not implemented)
Get the loadable module list (not implemented).
Definition at line 320 of file ModuleManager.cpp.
std::vector< coil::Properties > RTC::ModuleManager::getLoadedModules | ( | ) |
Get the module list that has been loaded.
Get the module list that has been loaded.
Definition at line 301 of file ModuleManager.cpp.
|
inline |
Get the module load path.
Get the search path of the set module.
Definition at line 391 of file ModuleManager.h.
|
protected |
Getting loadable file list on the loadpath for given language.
Definition at line 454 of file ModuleManager.cpp.
|
protected |
Getting module properties from given language and file list.
Definition at line 534 of file ModuleManager.cpp.
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.abs_path_allowed 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 |
Definition at line 78 of file ModuleManager.cpp.
std::string RTC::ModuleManager::load | ( | const std::string & | file_name, |
const std::string & | init_func | ||
) |
Load and intialize the module.
Load and initialize 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 |
Definition at line 155 of file ModuleManager.cpp.
|
protected |
Removing incalid module profiles.
Definition at line 433 of file ModuleManager.cpp.
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 |
Definition at line 265 of file ModuleManager.cpp.
void * RTC::ModuleManager::symbol | ( | const std::string & | file_name, |
const std::string & | func_name | ||
) | |||
throw | ( | ModuleNotFound, | |
SymbolNotFound | |||
) |
Refer to the symbol of the module.
Definition at line 230 of file ModuleManager.cpp.
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 |
Definition at line 186 of file ModuleManager.cpp.
void RTC::ModuleManager::unloadAll | ( | ) |
Unload all modules.
Unload all modules that have been loaded.
Definition at line 209 of file ModuleManager.cpp.
|
protected |
Flag of absolute path when specify module for the load.
Definition at line 738 of file ModuleManager.h.
|
protected |
Configuration path list.
Definition at line 722 of file ModuleManager.h.
|
protected |
Flag of URL when specify module for the load.
Definition at line 730 of file ModuleManager.h.
|
protected |
Initial execution function prefix.
Definition at line 756 of file ModuleManager.h.
|
protected |
Initial execution function suffix.
Definition at line 747 of file ModuleManager.h.
|
protected |
Module load path list.
Definition at line 714 of file ModuleManager.h.
|
protected |
Definition at line 776 of file ModuleManager.h.
|
protected |
Module list that has already loaded.
Definition at line 705 of file ModuleManager.h.
|
protected |
Module Manager properties.
Definition at line 678 of file ModuleManager.h.
|
protected |
Logger stream.
Definition at line 647 of file ModuleManager.h.