Fawkes API  Fawkes Development Version
module_manager.h
1 
2 /***************************************************************************
3  * module_manager.h - manager for modules (i.e. shared objects)
4  *
5  * Created: Wed Aug 23 16:15:02 2006
6  * Copyright 2006-2011 Tim Niemueller [www.niemueller.de]
7  *
8  ****************************************************************************/
9 
10 /* This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version. A runtime exception applies to
14  * this software (see LICENSE.GPL_WRE file mentioned below for details).
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Library General Public License for more details.
20  *
21  * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22  */
23 
24 #ifndef __UTILS_SYSTEM_DYNAMIC_MODULE_MODULE_MANAGER_H_
25 #define __UTILS_SYSTEM_DYNAMIC_MODULE_MODULE_MANAGER_H_
26 
27 #include <map>
28 #include <string>
29 
30 #include <utils/system/dynamic_module/module.h>
31 
32 namespace fawkes {
33 #if 0 /* just to make Emacs auto-indent happy */
34 }
35 #endif
36 
37 class Module;
38 class Mutex;
39 
41  public:
42 
43  ModuleManager(const char *module_base_dir,
45  virtual ~ModuleManager();
46 
47  virtual Module * open_module(const char *filename);
48  virtual void close_module(Module *module);
49  virtual void close_module(const char *filename);
50  virtual bool module_opened(const char *filename);
51  virtual Module * get_module(const char *filename);
52 
53  virtual const char * get_module_file_extension();
54 
55  void set_open_flags(Module::ModuleFlags open_flags);
56 
57  private:
58  std::map<std::string, Module * > __modules;
59 
60  const char *__module_base_dir;
61  Mutex *__mutex;
62  Module::ModuleFlags __open_flags;
63 
64 };
65 
66 } // end namespace fawkes
67 
68 #endif
void set_open_flags(Module::ModuleFlags open_flags)
Set flags to open modules with.
virtual ~ModuleManager()
Destructor.
virtual void close_module(Module *module)
Close a module by Module instance.
ModuleManager(const char *module_base_dir, Module::ModuleFlags open_flags=Module::MODULE_FLAGS_DEFAULT)
Constructor of NetworkManagerTemplate.
Fawkes library namespace.
ModuleFlags
Flags for the loading process.
Definition: module.h:44
virtual bool module_opened(const char *filename)
Check if the module is already opened.
Dynamic module loader for Linux, FreeBSD, and MacOS X.
Definition: module.h:40
virtual const char * get_module_file_extension()
Get the file extension for the current module type.
virtual Module * open_module(const char *filename)
Open a module.
Mutex mutual exclusion lock.
Definition: mutex.h:32
Dynamic module manager.
Default flags, these are MODULE_BIND_GLOBAL, MODULE_BIND_NOW and MODULE_BIND_DEEP.
Definition: module.h:46
virtual Module * get_module(const char *filename)
Get a module if opened.