summaryrefslogtreecommitdiff
path: root/server/include
diff options
context:
space:
mode:
Diffstat (limited to 'server/include')
-rw-r--r--server/include/api_core.h15
-rw-r--r--server/include/api_module_base.h2
-rw-r--r--server/include/modules_handler.h10
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;
};