24 #include <utils/system/dynamic_module/module_manager.h> 25 #include <core/threading/mutex.h> 26 #include <core/threading/mutex_locker.h> 45 ModuleManager::ModuleManager(
const char *module_base_dir,
49 __module_base_dir = module_base_dir;
50 __mutex =
new Mutex();
51 __open_flags = open_flags;
55 ModuleManager::~ModuleManager()
57 std::map<std::string, Module * >::iterator i;
58 for (i = __modules.begin(); i != __modules.end(); ++i) {
72 __open_flags = open_flags;
87 ModuleManager::open_module(
const char *filename)
90 if ( __modules.find(filename) != __modules.end() ) {
91 __modules[filename]->
ref();
93 return __modules[filename];
95 Module *module =
new Module(std::string(__module_base_dir) +
"/" + filename,
117 ModuleManager::close_module(
Module *module)
129 ModuleManager::close_module(
const char *filename)
132 if ( __modules.find(filename) != __modules.end() ) {
133 __modules[filename]->
unref();
134 if (__modules[filename]->notref()) {
135 delete __modules[filename];
136 __modules.erase( filename );
153 ModuleManager::get_module(
const char *filename)
156 if ( __modules.find(filename) != __modules.end() ) {
157 __modules[filename]->ref();
158 return __modules[filename];
172 ModuleManager::module_opened(
const char *filename)
174 return ( __modules.find(filename) != __modules.end() );
183 ModuleManager::get_module_file_extension()
185 return Module::get_file_extension();
virtual void unref()
Decrease the reference count of this module.
virtual void open()
Open the module.
Fawkes library namespace.
virtual void ref()
Increment the reference count of this module.
ModuleFlags
Flags for the loading process.
Dynamic module loader for Linux, FreeBSD, and MacOS X.
virtual std::string get_base_filename()
Get the base file name of the module.
Mutex mutual exclusion lock.