summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2015-07-23 01:55:52 +0300
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2015-07-23 01:55:52 +0300
commit7aade009f69a149ca28f7dd0af5db78d1caab00e (patch)
tree2bf8ada8d2ff4754a18ccc0e3ac4888c7a8080f0
parentcdf57192c12f1f5d4c88658594e2ce4fbb464baa (diff)
thinking about protocol
-rw-r--r--protocol/udm.proto92
1 files changed, 66 insertions, 26 deletions
diff --git a/protocol/udm.proto b/protocol/udm.proto
index 0035489..623f2d5 100644
--- a/protocol/udm.proto
+++ b/protocol/udm.proto
@@ -21,7 +21,7 @@
//TODO: write readable proto description
-
+//ui common proto part begin
enum MODULE_UI_ELEMENT_TYPE {
UI_EMPTY = 0; //helper type to set empty element
@@ -39,56 +39,101 @@ message module_ui_element_info {
optional string name = 4 [default = "not set"]; //can be non unique
}
-message server_ui_element_data_reply {
+message server_ui_element_data {
required string id = 1; //should be unique for every loaded module
required string data = 2;
}
-message client_ui_element_data_request {
- repeated string id = 1; //should be unique for for every loaded module
+message server_ui_data_reply {
+ required string module_name = 1;
+ repeated server_ui_element_data data = 2;
+}
+
+message client_ui_data_request {
+ required string module_name = 1;
+ repeated string id = 2; //should be unique for for every loaded module
+}
+
+
+//ui common proto part end
+
+//TOOD: extended ui updates subscriptions proto part (ui data messages on timer, e.t.c.)
+
+//ui subscriptions begin
+
+message ui_subscription_info_requiest {
+ required string module_name = 1;
+ repeated string id = 2;
+ optional bool one_shot = 3 [default = false];
+ required int64 interval = 4;
+}
+
+
+message ui_unsubscription_info {
+ repeated string id = 1; //unsubscript from all updates for given id's
}
+//ui subscriptions end
+
+
//TODO: settings:
// children ?
-// dependencies
// groups ?
-message setting {
- optional string name = 2 [default = "not set"]; //should be unique for every loaded module
- optional string default_value = 3 [default = "empty"];
- optional string value = 4 [default = "empty"];
+//settings common proto part begin
+
+message setting_info {
+ optional string default_value = 1 [default = "empty"];
+ optional string minimal_value = 2 [default = "not set"];
+ optional string maximal_value = 3 [default = "not set"];
+ repeated string dependencies = 4; //list containing all settings which must be turned on for this setting
+ repeated string blockers = 5; //list of settings which must be turned of for this setting
}
-message settings_info {
- repeated setting settings = 1;
+message setting {
+ required string name = 1 [default = "not set"]; //should be unique for every loaded module
+ optional setting_info info = 2;
+ optional string value = 3 [default = "empty"];
}
-//settings_info may be unset here (server settings dependent), can be requested at any time
+
+//settings common proto part end
+
+//TODO: settings transfer proto part (read, write, notifications ?)
+
+//module related messages begin
message module_info
{
required string name = 1; //unique (used as module id)
required string version = 2;
optional string decription = 3 [default = "no description specified"];
- required settings_info settings = 4; //may be ampty
+ repeated setting_info settings = 4; //may be ampty
repeated module_ui_element_info ui = 5; //always complete here
}
+//module related messages end
-
-
+//auth proto part begin
message client_auth_info {
required string login = 1;
required string password = 2;
}
+message server_auth_info {
+ required bool status = 1; //true == success, false == error
+ optional string auth_token = 2; //must be set if no error
+ optional string error_description = 3; //readable description must be set on error
+}
+
+//auth proto part end
//TODO: datatransfer proto part
// it should be in separate connection
// it should be very simple
-// it should have as smaal overhead as possible, better none at all
+// it should have as small overhead as possible, better none at all
//vaviant 1: client: > request peace of data
// server: < reply "peace of data" size or error
// client: if no error and data size is sane start reading "data size"
@@ -100,10 +145,8 @@ message client_auth_info {
//message server_data_transfer_reply {
//}
+//top level messages begin
-//TOOD: extended ui updates subscriptions proto part (ui data messages on timer, e.t.c.)
-
-//TODO: settings transfer proto part (read, write, notifications ?)
enum CLIENT_MSG_TYPE {
CLIENT_AUTH_REQUEST = 0;
@@ -115,7 +158,7 @@ message client_msg {
required CLIENT_MSG_TYPE type = 1;
optional string auth_token = 2; //this must be set in all message type's except CLIENT_AUTH_REQUEST
optional client_auth_info auth_info = 3;
- optional client_ui_element_data_request ui_element_data_request = 4;
+ optional client_ui_data_request ui_data_request = 4;
}
@@ -125,14 +168,11 @@ enum SERVER_MSG_TYPE {
SERVER_UI_DATA_REPLY = 1;
}
-message server_auth_info {
- required bool status = 1; //true == success, false == error
- optional string auth_token = 2; //must be set if no error
- optional string error_description = 3; //readable description must be set on error
-}
message server_msg {
required SERVER_MSG_TYPE type = 1;
- optional server_ui_element_data_reply ui_element_data_reply = 2;
+ optional server_ui_data_reply ui_data_reply = 2;
}
+
+//top level messages end