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();