diff options
author | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2015-07-23 01:55:52 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2015-07-23 01:55:52 +0300 |
commit | 7aade009f69a149ca28f7dd0af5db78d1caab00e (patch) | |
tree | 2bf8ada8d2ff4754a18ccc0e3ac4888c7a8080f0 | |
parent | cdf57192c12f1f5d4c88658594e2ce4fbb464baa (diff) |
thinking about protocol
-rw-r--r-- | protocol/udm.proto | 92 |
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 |