diff options
Diffstat (limited to 'server/include')
-rw-r--r-- | server/include/api_core.h | 15 | ||||
-rw-r--r-- | server/include/api_module_base.h | 2 | ||||
-rw-r--r-- | server/include/modules_handler.h | 10 |
3 files changed, 16 insertions, 11 deletions
diff --git a/server/include/api_core.h b/server/include/api_core.h index 1663f09..7dcec4d 100644 --- a/server/include/api_core.h +++ b/server/include/api_core.h @@ -30,13 +30,14 @@ class module_base; class core_api { - //core - std::map<std::string, std::string> get_module_settings(const module_base *m); - - //metadata - bool metadata_set(const module_base *m, const std::string &setting_name, const std::vector<char> &data); - bool metadata_get(const module_base *m, const std::string &setting_name, std::vector<char> &data); - bool metadata_remove(const module_base *m, const std::string &setting_name); + public: + //core + virtual std::map<std::string, std::string> get_module_settings(module_base *m); + + //metadata + virtual bool metadata_set(module_base *m, const std::string &setting_name, const std::vector<char> &data); + virtual bool metadata_get(module_base *m, const std::string &setting_name, std::vector<char> &data); + virtual bool metadata_remove(module_base *m, const std::string &setting_name); }; diff --git a/server/include/api_module_base.h b/server/include/api_module_base.h index 38c9a00..1a9fc4f 100644 --- a/server/include/api_module_base.h +++ b/server/include/api_module_base.h @@ -22,11 +22,13 @@ #ifndef API_MODULE_BASE_H_INCLUDED #define API_MODULE_BASE_H_INCLUDED #include <api_core.h> +#include <boost/function.hpp> struct module_info { std::string name, description, version; std::map<std::string, std::string> default_settings; //to save in config file + boost::function<void()> on_modules_loaded; }; class module_base diff --git a/server/include/modules_handler.h b/server/include/modules_handler.h index 2459d9c..c111faf 100644 --- a/server/include/modules_handler.h +++ b/server/include/modules_handler.h @@ -30,17 +30,19 @@ class modules_handler { public: modules_handler(); - std::string list_modules(short verbose_level = 0); + void load_modules(); + void on_modules_loaded(); + std::string list_modules(); ~modules_handler(); private: void load_metadata_modules(const std::string &path); void load_downloader_modules(const std::string &path); void sync_module_settings(module_base *m); + std::string list_modules_single_type_internal(const std::list<module_base*> &modules); std::string get_self_path(); std::string self_path; - std::list<module_metadata_storage*> metadata_modules; - std::list<module_downloader*> downloader_modules; - + std::list<module_base*> metadata_modules; + std::list<module_base*> downloader_modules; }; |