summaryrefslogtreecommitdiff
path: root/server/src/server_session.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/server_session.cpp')
-rw-r--r--server/src/server_session.cpp183
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);
}