summaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/src')
-rw-r--r--server/src/api_core.cpp12
-rw-r--r--server/src/main.cpp36
-rw-r--r--server/src/modules_handler.cpp12
3 files changed, 58 insertions, 2 deletions
diff --git a/server/src/api_core.cpp b/server/src/api_core.cpp
index 6cee810..c8f0032 100644
--- a/server/src/api_core.cpp
+++ b/server/src/api_core.cpp
@@ -29,19 +29,29 @@ extern runtime_config_s runtime_config;
bool core_api::metadata_set(module_base *m, const std::string &setting_name, const std::vector<char> &data)
{
- //TODO
+ //TODO: respect per module metadata modules definition
+ //print data
+/* std::cout<<"printing data in core set api:\n";
+ for(auto i = data.begin(), end = data.end(); i != end; ++i)
+ {
+ std::cout<<*i;
+ }
+ std::cout<<std::endl; */
+ runtime_config.default_metadata_storage->set(m->get_module_info().name, setting_name, data);
return true;
}
bool core_api::metadata_get(module_base *m, const std::string &setting_name, std::vector<char> &data)
{
//TODO
+ runtime_config.default_metadata_storage->get(m->get_module_info().name, setting_name, data);
return true;
}
bool core_api::metadata_remove(module_base *m, const std::string &setting_name)
{
//TODO
+ runtime_config.default_metadata_storage->remove(m->get_module_info().name, setting_name);
return true;
}
diff --git a/server/src/main.cpp b/server/src/main.cpp
index 8cf9efc..13b291b 100644
--- a/server/src/main.cpp
+++ b/server/src/main.cpp
@@ -116,11 +116,47 @@ int main(int argc, char *argv[])
}
if(run)
{
+ if(!module_api)
+ module_api = new core_api;
+ if(!modules)
+ {
+ modules = new modules_handler;
+ modules->load_modules();
+ }
+
+ std::string default_metadata_module_name = runtime_config.config_file.get<std::string>("default_metadata_module", "");
+ if(default_metadata_module_name == "")
+ {
+ if(!modules->get_metadata_modules().empty())
+ runtime_config.default_metadata_storage = static_cast<module_metadata_storage*>(*(modules->get_metadata_modules().begin()));
+ else
+ std::cerr<<"Error: Metadata storage modules not installed'n";
+ }
+ else
+ {
+ for(auto i = modules->get_metadata_modules().begin(), end = modules->get_metadata_modules().end(); i != end; ++i)
+ {
+ if((*i)->get_module_info().name == default_metadata_module_name)
+ runtime_config.default_metadata_storage = static_cast<module_metadata_storage*>(*i);
+ }
+ if(!runtime_config.default_metadata_storage)
+ {
+ std::cerr<<"Error: Failed to load metadata storage module named \""<<default_metadata_module_name<<"\" as default metadata storage module\n";
+ }
+ }
+ if(!runtime_config.default_metadata_storage)
+ {
+ std::cerr<<"Error: Failed to set default metadata storage module\n";
+ return -1;
+ }
+ modules->on_modules_loaded(); //call second initialization stage in modules
+
if(daemon)
{
//TODO: fork here
}
//TODO: run here
+ return 0; //stub for now
}
std::cerr<<"error: no command specified"<<std::endl;
std::cout<<desc<<std::endl;
diff --git a/server/src/modules_handler.cpp b/server/src/modules_handler.cpp
index b897aa6..818539b 100644
--- a/server/src/modules_handler.cpp
+++ b/server/src/modules_handler.cpp
@@ -174,7 +174,6 @@ void modules_handler::load_modules()
load_downloader_modules(self_dir + "/modules/downloader");
load_downloader_modules(replace_home_var("~/.share/udm/modules/downloader"));
load_downloader_modules("/usr/lib/udm/modules/downloader");
- on_modules_loaded();
load_modules_settings();
}
@@ -200,6 +199,17 @@ void modules_handler::load_modules_settings()
(*i)->set_module_settings(module_api->get_module_settings(*i));
}
+std::list<module_base*> &modules_handler::get_metadata_modules()
+{
+ return metadata_modules;
+}
+
+std::list<module_base*> &modules_handler::get_downloader_modules()
+{
+ return downloader_modules;
+}
+
+
modules_handler::~modules_handler()
{
//dtor