From 277b8e66aecf9f84e25c227cc83fd1258f8840cb Mon Sep 17 00:00:00 2001 From: drbob Date: Sun, 9 Sep 2012 11:43:59 +0000 Subject: [PATCH] Updated proto files: * Added TransferList & Control Download to files.proto * Added Search functionality to search.proto * Cleaned up core a little. * Added Partial Success code. NOTE: Incompatible Changes - be sure to refresh all generated files. git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5527 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- rsctrl/src/Makefile | 4 +- rsctrl/src/definition/core.proto | 19 ++- rsctrl/src/definition/files.proto | 214 +++++++++-------------------- rsctrl/src/definition/search.proto | 120 ++++++++++++++++ rsctrl/src/definition/system.proto | 26 +++- 5 files changed, 224 insertions(+), 159 deletions(-) create mode 100644 rsctrl/src/definition/search.proto diff --git a/rsctrl/src/Makefile b/rsctrl/src/Makefile index 103370652..e4353a659 100644 --- a/rsctrl/src/Makefile +++ b/rsctrl/src/Makefile @@ -1,7 +1,7 @@ EXEC = protoc -#PROTO = core.proto peers.proto system.proto chat.proto files.proto gxs.proto msgs.proto -PROTO = core.proto peers.proto system.proto chat.proto +#PROTO = core.proto peers.proto system.proto chat.proto search.proto files.proto gxs.proto msgs.proto +PROTO = core.proto peers.proto system.proto chat.proto search.proto files.proto PROTOPATH = ./definition #CDESTPATH = ./gencc diff --git a/rsctrl/src/definition/core.proto b/rsctrl/src/definition/core.proto index 58d550077..69443af5d 100644 --- a/rsctrl/src/definition/core.proto +++ b/rsctrl/src/definition/core.proto @@ -15,9 +15,11 @@ enum PackageId { PEERS = 1; SYSTEM = 2; CHAT = 3; + SEARCH = 4; + FILES = 5; // BELOW HERE IS STILL BEING DESIGNED. - //FILES = 4; //MSGS = 5; + //TRANSFER = 6; // THEORETICAL ONES. GXS = 1000; @@ -32,9 +34,11 @@ message Status { FAILED = 0; NO_IMPL_YET = 1; INVALID_QUERY = 2; - SUCCESS = 3; - READMSG = 4; + PARTIAL_SUCCESS = 3; + SUCCESS = 4; + READMSG = 5; } + required StatusCode code = 1; optional string msg = 2; } @@ -89,11 +93,12 @@ message Person { message File { required string name = 1; required string hash = 2; - required int64 size = 3; - - optional string path = 4; - optional string avail = 5; + required uint64 size = 3; + // THINK WE DONT WANT THESE HERE... + // BETTER TO KEEP File simple. + //optional string path = 4; + //optional string avail = 5; } message Dir { diff --git a/rsctrl/src/definition/files.proto b/rsctrl/src/definition/files.proto index 1c813b032..5546c2efc 100644 --- a/rsctrl/src/definition/files.proto +++ b/rsctrl/src/definition/files.proto @@ -3,197 +3,115 @@ package rsctrl.files; import "core.proto"; /////////////////////////////////////////////////////////////// -// Mirror most of rsFiles functionality. -// -// Share Directories. -// Searches // List Transfers. // Control Transfers. +// +// TODO: +// Share Directories. /////////////////////////////////////////////////////////////// enum RequestMsgIds { - MsgId_RequestPeers = 1; - MsgId_RequestAddPeer = 2; - MsgId_RequestModifyPeer = 3; + MsgId_RequestTransferList = 1; + MsgId_RequestControlDownload = 2; } enum ResponseMsgIds { - MsgId_ResponsePeerList = 1; - MsgId_ResponseAddPeer = 2; - MsgId_ResponseModifyPeer = 3; + MsgId_ResponseTransferList = 1; + MsgId_ResponseControlDownload = 2; } /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// -// SEARCH (start). -// REQUEST: RequestBasicSearch -message RequestBasicSearch { +// Building Blocks - repeated string terms = 1; +enum Direction { + DIRECTION_UPLOAD = 1; + DIRECTION_DOWNLOAD = 2; } -// REQUEST: RequestAdvSearch -message RequestAdvSearch { +message FileTransfer { - repeated string terms = 1; + required rsctrl.core.File file = 1; + required Direction direction = 2; + required float fraction = 3; + required float rate_kBs = 4; } +/////////////////////////////////////////////////////////////// +// Transfer List. -// RESPONSE: ResponseSearchId -message ResponseSearchId { +// REQUEST: RequestTransferList +message RequestTransferList { + required Direction direction = 1; +} + +// RESPONSE: ResponseTransferList +message ResponseTransferList { required rsctrl.core.Status status = 1; - required string search_id = 2; + repeated FileTransfer transfers = 2; + } /////////////////////////////////////////////////////////////// -// SEARCH (list) +// Download. +// REQUEST: RequestControlDownload +// START requires name, hash & size. +// other actions only require file hash. +message RequestControlDownload { -// REQUEST: RequestSearchResults -message RequestSearchResults { - - enum SetCmd { - ALLIDS = 1; // All - LISTED = 2; // Only Search Ids in the Vector. - } - - required SetCmd set = 1; - repeated string search_ids = 2; -} - -// Building Block -message SearchHit { - - enum LocFlag { - LOCAL = 1; // We Have it. - FRIEND = 2; // Browsable - NETWORK = 4; // Network. + enum Action { + ACTION_START = 1; // start download. + ACTION_CONTINUE = 2; // move to top of queue. + ACTION_WAIT = 3; // send to bottom of queue. + ACTION_PAUSE = 4; // hold indefinitely. + ACTION_RESTART = 5; // end pause, restart download. + ACTION_CHECK = 6; // force check. + ACTION_CANCEL = 7; // remove permenantly. } required rsctrl.core.File file = 1; - required uint32 no_hits = 2; - required LocFlag loc = 3; + required Action action = 2; } -message SearchSet { - - required string search_id = 1; - - enum SearchType { - BASIC = 1; // Stuff. - ADVANCED = 2; // Stuff. - } - - // One of these will be filled in depending on flag. - - required SearchType search_type = 2; - optional RequestBasicSearch basic_req = 3; - optional RequestAdvSearch adv_req = 4; - - repeated SearchHit hits = 5; - -} - -// RESPONSE: ResponseSearchResults -message ResponseSearchResults { - +// RESPONSE: ResponseControlDownload +message ResponseControlDownload { required rsctrl.core.Status status = 1; - repeated SearchSet searches = 2; } -/////////////////////////////////////////////////////////////// -// SEARCH (cancel) - -// REQUEST: RequestCloseSearch -message RequestCloseSearch { - - required string search_id = 2; -} - - -// RESPONSE: ResponseSearchId -// As before. - - /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// // SHARED FILES +// THIS STUFF IS NOT FINISHED YET! +// +//// REQUEST: RequestListShares +//message RequestListShares { +// +// required uint32 depth = 1; // HOW Many Directories to drill down. +// repeated string ShareLocation = 2; +//} +// +//message ShareLocation { +// required string ssl_id = 1; +// required string path = 2; +//} +// +// +// +//// REQUEST: RequestChangeShares +// +//// REQUEST: RequestLiCloseSearch +//// REQUEST: RequestCloseSearch +// -// REQUEST: RequestListShares -message RequestListShares { - - required uint32 depth = 1; // HOW Many Directories to drill down. - repeated string ShareLocation = 2; -} - -message ShareLocation { - required string ssl_id = 1; - required string path = 2; -} - - - -// REQUEST: RequestChangeShares - -// REQUEST: RequestLiCloseSearch -// REQUEST: RequestCloseSearch - - - - -// REQUEST: RequestAddPeer -message RequestAddPeer { - - enum AddCmd { - NOOP = 0; // No op. - ADD = 1; // Add existing from gpg_id. - REMOVE = 2; // Remove existing from gpg_id. - IMPORT = 3; // Import from cert, with gpg_id. - EXAMINE = 4; // Examine cert, but no action. - } - - required string gpg_id = 1; - required AddCmd cmd = 2; - optional string cert = 3; -} - -// RESPONSE: ResponseAddPeer -message ResponseAddPeer { - required rsctrl.core.Status status = 1; - repeated rsctrl.core.Person peers = 2; -} - /////////////////////////////////////////////////////////////// - -// REQUEST: RequestModifyPeer -message RequestModifyPeer { - - enum ModCmd { - NOOP = 0; - ADDRESS = 1; - DYNDNS = 2; - //SOMETHING_ELSE = 0x0000010; - //SOMETHING_ELSE = 0x0000020; - //SOMETHING_ELSE = 0x0000040; - //SOMETHING_ELSE = 0x0000080; - } - - required ModCmd cmd = 1; - //required int64 cmd = 1; // Could we OR the Cmds together? - repeated rsctrl.core.Person peers = 2; -} - -// RESPONSE: ResponseModifyPeer -message ResponseModifyPeer { - required rsctrl.core.Status status = 1; - repeated rsctrl.core.Person peers = 2; -} - +/////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// diff --git a/rsctrl/src/definition/search.proto b/rsctrl/src/definition/search.proto new file mode 100644 index 000000000..6aecdb49f --- /dev/null +++ b/rsctrl/src/definition/search.proto @@ -0,0 +1,120 @@ +package rsctrl.search; + +import "core.proto"; + +/////////////////////////////////////////////////////////////// +// Searches +/////////////////////////////////////////////////////////////// + +enum RequestMsgIds { + MsgId_RequestBasicSearch = 1; + //MsgId_RequestAdvSearch = 2; // NOT IMPLEMENTED YET. + MsgId_RequestCloseSearch = 3; + MsgId_RequestListSearches = 4; + MsgId_RequestSearchResults = 5; +} + +enum ResponseMsgIds { + MsgId_ResponseSearchIds = 1; + MsgId_ResponseSearchResults = 5; +} + +/////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////// +// Building Block +message SearchHit { + + enum LocFlag { + LOCAL = 1; // We Have it. + FRIEND = 2; // Browsable + NETWORK = 4; // Network. + } + + required rsctrl.core.File file = 1; + required uint32 loc = 2; // OR of LocFlag so uint field + required uint32 no_hits = 3; // NOT USED YET. + +} + +message SearchSet { + + required uint32 search_id = 1; + repeated SearchHit hits = 2; + +} + +/////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////// +// SEARCH (start). + +// REQUEST: RequestBasicSearch +message RequestBasicSearch { + + repeated string terms = 1; +} + +// REQUEST: RequestAdvSearch +message RequestAdvSearch { + + repeated string terms = 1; +} + + +// RESPONSE: ResponseSearchIds +message ResponseSearchIds { + + required rsctrl.core.Status status = 1; + repeated uint32 search_id = 2; +} + + +/////////////////////////////////////////////////////////////// +// SEARCH (cancel) + +// REQUEST: RequestCloseSearch +message RequestCloseSearch { + + required uint32 search_id = 1; +} + + +// RESPONSE: ResponseSearchIds +// As before. + +/////////////////////////////////////////////////////////////// +// SEARCH (list) + +// REQUEST: RequestListSearches +message RequestListSearches { + // Nothing here. +} + +// RESPONSE: ResponseSearchIds +// As before. + +/////////////////////////////////////////////////////////////// +// SEARCH (list) + + +// REQUEST: RequestSearchResults +// Empty search_ids => all results. +message RequestSearchResults { + + repeated uint32 search_ids = 2; + +} + +// RESPONSE: ResponseSearchResults +message ResponseSearchResults { + + required rsctrl.core.Status status = 1; + repeated SearchSet searches = 2; +} + + +/////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////// + diff --git a/rsctrl/src/definition/system.proto b/rsctrl/src/definition/system.proto index 73ed8da8a..e24e42b29 100644 --- a/rsctrl/src/definition/system.proto +++ b/rsctrl/src/definition/system.proto @@ -8,12 +8,12 @@ import "core.proto"; enum RequestMsgIds { MsgId_RequestSystemStatus = 1; - //MsgId_RequestNetConfig = 2; + MsgId_RequestSystemQuit = 2; } enum ResponseMsgIds { MsgId_ResponseSystemStatus = 1; - //MsgId_ResponseNetConfig = 2; + MsgId_ResponseSystemQuit = 2; } /////////////////////////////////////////////////////////////// @@ -51,6 +51,28 @@ message ResponseSystemStatus { required rsctrl.core.Bandwidth bw_total = 5; } +/////////////////////////////////////////////////////////////// + +// REQUEST: RequestSystemQuit +message RequestSystemQuit { + + enum QuitCode { + CLOSE_CHANNEL = 1; + SHUTDOWN_RS = 2; // NOT RECOMMENDED (but some people might like it) + } + + required QuitCode quit_code = 1; +} + +// RESPONSE: ResponseSystemQuit +// Effect potentially immediate (with loss of connection) - only expect a response error. +// Shutdown takes longer - so you should get a response. +message ResponseSystemQuit { + + // Status of response. + required rsctrl.core.Status status = 1; +} + /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////