Added Directory structure for new rsctrl protocol.

* see NOTES.txt for how to implement it.
 * protobuf definitions are in rsctrl/src/definition

This does not compile yet, and just early thoughts.
Suggestions and help developing this are welcome.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5445 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
drbob 2012-08-20 18:59:13 +00:00
parent bb10b6b400
commit 8a7c011c5d
3 changed files with 227 additions and 0 deletions

View file

@ -0,0 +1,61 @@
package rsctrl.base:
///////////////////////////////////////////////////////////////
// These are basic Messages, which are used as building blocks
// throughout the rest of the interface.
// They should not be sent RAW, but should be wrapped in another msg.
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// Basic Status Response, should be in all responses
message Status {
enum StatusCode {
FAILED = 0;
INVALID_QUERY = 1;
SUCCESS = 2;
READMSG = 3;
}
required StatusCode code = 1;
optional string msg = 2;
}
///////////////////////////////////////////////////////////////
// Peer structures, mainly rsctrl.peers related.
message Location {
required string ssl_id = 1;
required string location = 2;
required string localaddr = 3;
required string extaddr = 4;
}
message Person {
required string gpg_id = 1;
required string name = 2;
repeated Location locations = 3;
}
///////////////////////////////////////////////////////////////
// File structures, mainly rsctrl.files related.
message File {
required string name = 1;
required string hash = 2;
required int64 size = 3;
optional string path = 4;
optional string avail = 5;
}
message Dir {
required string name = 1;
required string path = 2;
repeated Dir subdirs = 3;
repeated File files = 4;
}

View file

@ -0,0 +1,106 @@
package rsctrl.peers:
///////////////////////////////////////////////////////////////
// Access, and Control your Friends / Peers and related Settings.
///////////////////////////////////////////////////////////////
enum ExtensionId { BASE = 0; }
enum PackageId { PEERS = 1; }
enum RequestMsgIds {
RequestPeers = 1;
RequestAddPeer = 2;
RequestModifyPeer = 2;
}
enum ResponseMsgIds {
ResponsePeerList = 1;
ResponseAddPeer = 2;
ResponseModifyPeer = 2;
}
///////////////////////////////////////////////////////////////
// REQUEST: RequestPeers
message RequestPeers {
// About Who?
enum SetOption {
LISTED = 1;
ONLINE = 2;
FRIENDS = 3;
VALID = 4;
ALL = 5;
}
// What do you want?
enum InfoOption {
NAMEONLY = 1;
BASIC = 2;
LOCATION = 3;
ALL = 4;
}
required SetOption set = 1;
required InfoOption info = 2;
repeated string gpg_ids = 3;
}
// RESPONSE: ResponsePeerList
message ResponsePeerList {
required rsctrl.base.Status status = 1;
repeated rsctrl.base.Person peers = 2;
}
///////////////////////////////////////////////////////////////
// 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.base.Status status = 1;
repeated rsctrl.base.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.base.Person peers = 2;
}
// RESPONSE: ResponseModifyPeer
message ResponseModifyPeer {
required rsctrl.base.Status status = 1;
repeated rsctrl.base.Person peers = 2;
}
///////////////////////////////////////////////////////////////