24 #include <core/threading/mutex.h>
25 #include <core/threading/mutex_locker.h>
26 #include <utils/system/dynamic_module/module_manager.h>
44 module_base_dir_ = module_base_dir;
46 open_flags_ = open_flags;
52 std::map<std::string, Module *>::iterator i;
53 for (i = modules_.begin(); i != modules_.end(); ++i) {
66 open_flags_ = open_flags;
83 if (modules_.find(filename) != modules_.end()) {
84 modules_[filename]->ref();
86 return modules_[filename];
88 Module *module =
new Module(std::string(module_base_dir_) +
"/" + filename, open_flags_);
122 if (modules_.find(filename) != modules_.end()) {
123 modules_[filename]->unref();
124 if (modules_[filename]->notref()) {
125 delete modules_[filename];
126 modules_.erase(filename);
145 if (modules_.find(filename) != modules_.end()) {
146 modules_[filename]->ref();
147 return modules_[filename];
162 return (modules_.find(filename) != modules_.end());
virtual ~ModuleManager()
Destructor.
virtual const char * get_module_file_extension()
Get the file extension for the current module type.
virtual void close_module(Module *module)
Close a module by Module instance.
virtual Module * get_module(const char *filename)
Get a module if opened.
virtual Module * open_module(const char *filename)
Open a module.
ModuleManager(const char *module_base_dir, Module::ModuleFlags open_flags=Module::MODULE_FLAGS_DEFAULT)
Constructor of NetworkManagerTemplate.
void set_open_flags(Module::ModuleFlags open_flags)
Set flags to open modules with.
virtual bool module_opened(const char *filename)
Check if the module is already opened.
Dynamic module loader for Linux, FreeBSD, and MacOS X.
virtual std::string get_base_filename()
Get the base file name of the module.
ModuleFlags
Flags for the loading process.
virtual void open()
Open the module.
static const char * get_file_extension()
Get file extension for dl modules.
Mutex mutual exclusion lock.
void lock()
Lock this mutex.
void unlock()
Unlock the mutex.
Fawkes library namespace.