OpenRTM-aist  1.2.1
Classes | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
RTC::ModuleManager Class Reference

ModuleManager class. More...

#include <ModuleManager.h>

Collaboration diagram for RTC::ModuleManager:
Collaboration graph
[legend]

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. More...
 
 ~ModuleManager (void)
 Destructor. 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...
 
void unload (const std::string &file_name)
 Unload the module. More...
 
void unloadAll ()
 Unload all modules. 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 setLoadpath (const std::vector< std::string > &load_path)
 Set the module load path. More...
 
std::vector< std::string > getLoadPath ()
 Get the module load path. More...
 
void addLoadpath (const std::vector< std::string > &load_path)
 Add the module load path. More...
 
std::vector< coil::PropertiesgetLoadedModules ()
 Get the module list that has been loaded. More...
 
std::vector< coil::PropertiesgetLoadableModules ()
 Get the loadable module list. More...
 
void allowAbsolutePath ()
 Allow absolute path when specify module path. More...
 
void disallowAbsolutePath ()
 Disallow absolute path when specify module path. More...
 
void allowModuleDownload ()
 Allow URL when specify module path. More...
 
void disallowModuleDownload ()
 Disallow URL when specify module path. More...
 
std::string findFile (const std::string &fname, const std::vector< std::string > &load_path)
 Search the file from the LoadPath. More...
 
bool fileExist (const std::string &filename)
 Check whether the file exists. More...
 
std::string getInitFuncName (const std::string &file_path)
 Create initialization function symbol. More...
 

Protected Types

typedef std::vector< std::string > StringVector
 
typedef StringVector::iterator StringVectorItr
 
typedef StringVector::const_iterator StringVectorConstItr
 
typedef std::vector< DLLEntityDllMap
 
typedef DllMap::iterator DllMapItr
 
typedef DllMap::const_iterator DllMapConstItr
 

Protected Member Functions

void removeInvalidModules ()
 Removing incalid module profiles. More...
 
void getModuleList (const std::string &lang, coil::vstring &modules)
 Getting loadable file list on the loadpath for given language. More...
 
void addNewFile (const std::string &fpath, coil::vstring &modules)
 Adding file path not existing cache. More...
 
void getModuleProfiles (const std::string &lang, const coil::vstring &modules, vProperties &modprops)
 Getting module properties from given language and file list. More...
 

Protected Attributes

Logger rtclog
 Logger stream. More...
 
coil::Propertiesm_properties
 Module Manager properties. More...
 
ObjectManager< const char *, DLLEntity, DllPredm_modules
 Module list that has already loaded. More...
 
StringVector m_loadPath
 Module load path list. More...
 
StringVector m_configPath
 Configuration path list. More...
 
bool m_downloadAllowed
 Flag of URL when specify module for the load. More...
 
bool m_absoluteAllowed
 Flag of absolute path when specify module for the load. More...
 
std::string m_initFuncSuffix
 Initial execution function suffix. More...
 
std::string m_initFuncPrefix
 Initial execution function prefix. More...
 
vProperties m_modprofs
 
coil::vstring m_loadfailmods
 

Detailed Description

ModuleManager class.

This is a class to manage for loading and unloading modules.

Since
0.4.0

Member Typedef Documentation

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

Constructor & Destructor Documentation

RTC::ModuleManager::ModuleManager ( coil::Properties prop)

Constructor.

Constructor. Initialize based on information in the set Property object.

Parameters
propProperties for initialization
RTC::ModuleManager::~ModuleManager ( void  )

Destructor.

Member Function Documentation

void RTC::ModuleManager::addLoadpath ( const std::vector< std::string > &  load_path)

Add the module load path.

Add specified path list to search path list.

Returns
load_path List of additional module search path

Referenced by getLoadPath().

void RTC::ModuleManager::addNewFile ( const std::string &  fpath,
coil::vstring modules 
)
protected

Adding file path not existing cache.

Referenced by disallowModuleDownload().

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 addNewFile(), fileExist(), findFile(), getInitFuncName(), getModuleList(), getModuleProfiles(), m_downloadAllowed, and removeInvalidModules().

bool RTC::ModuleManager::fileExist ( const std::string &  filename)

Check whether the file exists.

Check whether the specified file exists.

Parameters
filenameName of file existence for checking
Returns
File existence result(File existence:true, Else:false)

Referenced by disallowModuleDownload().

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.

Parameters
fnameTarget file name of the search
load_pathPath list for the search
Returns
File name that was found

Referenced by disallowModuleDownload().

std::string RTC::ModuleManager::getInitFuncName ( const std::string &  file_path)

Create initialization function symbol.

Assemble names of the initialization functions.

Parameters
file_pathName of module for initialization
Returns
Assembly result of initialization function name

Referenced by disallowModuleDownload().

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

Get the loadable module list.

Get the loadable module list (not implemented).

Returns
Loadable module list

Referenced by getLoadPath().

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

Get the module list that has been loaded.

Get the module list that has been loaded.

Returns
List of module that has been loaded

Referenced by getLoadPath().

std::vector<std::string> RTC::ModuleManager::getLoadPath ( )
inline

Get the module load path.

Get the search path of the set module.

Returns
load_path List of module search path

References addLoadpath(), getLoadableModules(), getLoadedModules(), and m_loadPath.

void RTC::ModuleManager::getModuleList ( const std::string &  lang,
coil::vstring modules 
)
protected

Getting loadable file list on the loadpath for given language.

Referenced by disallowModuleDownload().

void RTC::ModuleManager::getModuleProfiles ( const std::string &  lang,
const coil::vstring modules,
vProperties &  modprops 
)
protected

Getting module properties from given language and file list.

Referenced by disallowModuleDownload().

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.

Parameters
file_nameThe target module name for the loading
Returns
Name of module for the specified load
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.

Parameters
file_nameThe target module name for the loading
init_funcOperation for initialization
Returns
Name of module for the specified load
void RTC::ModuleManager::removeInvalidModules ( )
protected

Removing incalid module profiles.

Referenced by disallowModuleDownload().

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.

Parameters
load_pathList 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.

Parameters
file_nameName of module for the unloading
void RTC::ModuleManager::unloadAll ( )

Unload all modules.

Unload all modules that have been loaded.

Member Data Documentation

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.

coil::vstring RTC::ModuleManager::m_loadfailmods
protected
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.


The documentation for this class was generated from the following file: