24 #ifndef _PLUGIN_MANAGER_H_
25 #define _PLUGIN_MANAGER_H_
27 #include <config/change_handler.h>
28 #include <core/utils/lock_list.h>
29 #include <core/utils/lock_map.h>
30 #include <utils/system/dynamic_module/module.h>
31 #include <utils/system/fam.h>
38 class ThreadCollector;
42 class PluginListMessage;
45 class PluginManagerListener;
52 const char * meta_plugin_prefix,
54 bool init_cache =
true);
67 virtual void fam_event(
const char *filename,
unsigned int mask);
69 void load(
const std::string &plugin_list);
70 void load(
const std::list<std::string> &plugin_list);
71 void unload(
const std::string &plugin_name);
73 bool is_loaded(
const std::string &plugin_name);
89 void notify_loaded(
const char *plugin_name);
90 void notify_unloaded(
const char *plugin_name);
92 std::list<std::string> parse_plugin_list(
const char *plugin_type_list);
106 unsigned int next_plugin_id;
107 std::map<std::string, unsigned int> plugin_ids;
115 std::string meta_plugin_prefix_;
Plugin representation for JSON transfer.
Interface for configuration change handling.
Iterator interface to iterate over config values.
Interface for configuration handling.
File Alteration Monitor Listener.
FileAlterationMonitor thread wrapper.
ModuleFlags
Flags for the loading process.
@ MODULE_FLAGS_DEFAULT
Default flags, these are MODULE_BIND_GLOBAL, MODULE_BIND_NOW and MODULE_BIND_DEEP.
Mutex mutual exclusion lock.
This class manages plugins.
virtual void config_value_changed(const Configuration::ValueIterator *v)
Called whenever a watched value has changed.
void remove_listener(PluginManagerListener *listener)
Remove listener.
bool is_loaded(const std::string &plugin_name)
Check if plugin is loaded.
~PluginManager()
Destructor.
void unload(const std::string &plugin_name)
Unload plugin.
virtual void config_comment_changed(const Configuration::ValueIterator *v)
Called whenever a comment of a watched value has changed.
void init_pinfo_cache()
Initialize plugin info cache.
std::list< std::pair< std::string, std::string > > get_available_plugins()
Generate list of all available plugins.
virtual void fam_event(const char *filename, unsigned int mask)
Event has been raised.
void add_listener(PluginManagerListener *listener)
Add listener.
void load(const std::string &plugin_list)
Load plugin.
std::list< std::string > get_loaded_plugins()
Get list of loaded plugins.
void unlock()
Unlock plugin manager.
virtual void config_tag_changed(const char *new_location)
Called whenever the tag has changed.
PluginManager(ThreadCollector *thread_collector, Configuration *config, const char *meta_plugin_prefix, Module::ModuleFlags module_flags=Module::MODULE_FLAGS_DEFAULT, bool init_cache=true)
Constructor.
bool try_lock()
Try to lock plugin manager.
std::list< std::string > get_meta_plugin_children(const std::string &plugin_name)
Get meta plugin children.
bool is_meta_plugin(const std::string &plugin_name)
Check if plugin is a meta plugin.
virtual void config_value_erased(const char *path)
Called whenever a value has been erased from the config.
void lock()
Lock plugin manager.
void set_module_flags(Module::ModuleFlags flags)
Set flags to open modules with.
Fawkes library namespace.