diff options
Diffstat (limited to 'server/src/server_session.cpp')
-rw-r--r-- | server/src/server_session.cpp | 183 |
1 files changed, 159 insertions, 24 deletions
diff --git a/server/src/server_session.cpp b/server/src/server_session.cpp index d0ff26c..ca4df5a 100644 --- a/server/src/server_session.cpp +++ b/server/src/server_session.cpp @@ -118,6 +118,147 @@ void server_session::handle_read(const boost::system::error_code& error, size_t } } +void add_runtime_module_setting(const std::pair<std::string, setting_s> &s, module_info *mi) +{ + setting *msi = mi->add_settings(); + msi->set_name(s.first); + msi->set_value(s.second.value); + for(auto di : s.second.info.dependencies) + msi->mutable_info()->add_dependencies(di); + for(auto bi : s.second.info.blockers) + msi->mutable_info()->add_blockers(bi); + msi->mutable_info()->set_default_value(s.second.info.default_value); + msi->mutable_info()->set_minimal_value(s.second.info.minimal_value); + msi->mutable_info()->set_maximal_value(s.second.info.maximal_value); + msi->mutable_info()->set_description(s.second.info.description); + +} + + +void add_download_info_ui_element(module_download_ui_element_info_s& element, module_download_ui_element_info *mi) +{ + module_download_ui_element_info *e = mi->add_children(); + e->set_description(element.description); + e->set_name(element.name); + e->set_id(element.id); + switch(element.type) + { + case MODULE_UI_ELEMENT_TYPE_e::UI_EMPTY_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_EMPTY); + break; + case MODULE_UI_ELEMENT_TYPE_e::UI_GROUP_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_GROUP); + break; + case MODULE_UI_ELEMENT_TYPE_e::UI_INTEGER_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_INTEGER); + break; + case MODULE_UI_ELEMENT_TYPE_e::UI_PROGRESS_BAR_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_PROGRESS_BAR); + break; + case MODULE_UI_ELEMENT_TYPE_e::UI_STR_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_STR); + break; + default: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_EMPTY); + break; + } + for(auto ui_element: element.children) + add_download_info_ui_element(ui_element, e); +} + +void add_download_info_ui_element(module_download_ui_element_info_s& element, module_info *mi) +{ + module_download_ui_element_info *e = mi->add_download_info_ui(); + e->set_description(element.description); + e->set_name(element.name); + e->set_id(element.id); + switch(element.type) + { + case MODULE_UI_ELEMENT_TYPE_e::UI_EMPTY_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_EMPTY); + break; + case MODULE_UI_ELEMENT_TYPE_e::UI_GROUP_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_GROUP); + break; + case MODULE_UI_ELEMENT_TYPE_e::UI_INTEGER_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_INTEGER); + break; + case MODULE_UI_ELEMENT_TYPE_e::UI_PROGRESS_BAR_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_PROGRESS_BAR); + break; + case MODULE_UI_ELEMENT_TYPE_e::UI_STR_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_STR); + break; + default: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_EMPTY); + break; + } + for(auto ui_element: element.children) + add_download_info_ui_element(ui_element, e); +} + +void add_download_create_ui_element(module_download_ui_element_info_s& element, module_info *mi) +{ + module_download_ui_element_info *e = mi->add_download_creation_ui(); + e->set_description(element.description); + e->set_name(element.name); + e->set_id(element.id); + switch(element.type) + { + case MODULE_UI_ELEMENT_TYPE_e::UI_EMPTY_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_EMPTY); + break; + case MODULE_UI_ELEMENT_TYPE_e::UI_GROUP_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_GROUP); + break; + case MODULE_UI_ELEMENT_TYPE_e::UI_INTEGER_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_INTEGER); + break; + case MODULE_UI_ELEMENT_TYPE_e::UI_PROGRESS_BAR_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_PROGRESS_BAR); + break; + case MODULE_UI_ELEMENT_TYPE_e::UI_STR_: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_STR); + break; + default: + e->set_type(MODULE_UI_ELEMENT_TYPE::UI_EMPTY); + break; + } + for(auto ui_element: element.children) + add_download_info_ui_element(ui_element, e); +} + +void add_download_menu_element(module_download_menu_element_info_s &element, module_download_menu_element_info *mi) +{ + module_download_menu_element_info *e = mi->add_children(); + e->set_description(element.description); + e->set_id(element.id); + e->set_name(element.name); + for(auto menu_element: element.children) + add_download_menu_element(menu_element, e); +} + +void add_download_menu_element(module_download_menu_element_info_s &element, module_info *mi) +{ + module_download_menu_element_info *e = mi->add_download_menu(); + e->set_description(element.description); + e->set_id(element.id); + e->set_name(element.name); + for(auto menu_element: element.children) + add_download_menu_element(menu_element, e); +} + +void add_download_content_menu_element(module_download_menu_element_info_s &element, module_info *mi) +{ + module_download_menu_element_info *e = mi->add_download_content_menu(); + e->set_description(element.description); + e->set_id(element.id); + e->set_name(element.name); + for(auto menu_element: element.children) + add_download_menu_element(menu_element, e); +} + + void server_session::handle_command(client_msg *msg) { if(msg->type() != CLIENT_MSG_TYPE::CLIENT_AUTH_REQUEST && clients.find(msg->auth_token()) == clients.end()) @@ -208,19 +349,25 @@ void server_session::handle_command(client_msg *msg) mi->set_description(i->get_module_info().description); mi->set_version(i->get_module_info().version); for(auto ms : i->get_runtime_module_settings()) + add_runtime_module_setting(ms, mi); + const downloader_module_info &dmi = static_cast<const downloader_module_info&>(i->get_module_info()); + for(auto ui_element : dmi.download_info_ui) + add_download_info_ui_element(ui_element, mi); + for(auto ui_element : dmi.download_creation_ui) + add_download_create_ui_element(ui_element, mi); + for(auto menu_entry : dmi.download_root_menu) + add_download_menu_element(menu_entry, mi); + for(auto menu_entry : dmi.download_content_menu) + add_download_content_menu_element(menu_entry, mi); + for(auto si : dmi.get_downloads_parameters_info) { - setting *msi = mi->add_settings(); - msi->set_name(ms.first); - msi->set_value(ms.second.value); - for(auto di : ms.second.info.dependencies) - msi->mutable_info()->add_dependencies(di); - for(auto bi : ms.second.info.blockers) - msi->mutable_info()->add_blockers(bi); - msi->mutable_info()->set_default_value(ms.second.info.default_value); - msi->mutable_info()->set_minimal_value(ms.second.info.minimal_value); - msi->mutable_info()->set_maximal_value(ms.second.info.maximal_value); - msi->mutable_info()->set_description(ms.second.info.description); + string_pair *p = mi->add_get_downloads_parameters_info(); + p->set_name(si.first); + p->set_value(si.second); } + + + } for(auto i : modules->get_metadata_modules()) { @@ -230,19 +377,7 @@ void server_session::handle_command(client_msg *msg) mi->set_description(i->get_module_info().description); mi->set_version(i->get_module_info().version); for(auto ms : i->get_runtime_module_settings()) - { - setting *msi = mi->add_settings(); - msi->set_name(ms.first); - msi->set_value(ms.second.value); - for(auto di : ms.second.info.dependencies) - msi->mutable_info()->add_dependencies(di); - for(auto bi : ms.second.info.blockers) - msi->mutable_info()->add_blockers(bi); - msi->mutable_info()->set_default_value(ms.second.info.default_value); - msi->mutable_info()->set_minimal_value(ms.second.info.minimal_value); - msi->mutable_info()->set_maximal_value(ms.second.info.maximal_value); - msi->mutable_info()->set_description(ms.second.info.description); - } + add_runtime_module_setting(ms, mi); } send_message(&msg); } |