diff options
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/api_core.cpp | 12 | ||||
-rw-r--r-- | server/src/main.cpp | 36 | ||||
-rw-r--r-- | server/src/modules_handler.cpp | 12 |
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 |