RetroShare/rsctrl/src/definition/files.proto
2013-04-22 22:40:30 +00:00

143 lines
3.4 KiB
Protocol Buffer

package rsctrl.files;
import "core.proto";
///////////////////////////////////////////////////////////////
// List Transfers.
// Control Transfers.
//
// TODO:
// Share Directories.
///////////////////////////////////////////////////////////////
enum RequestMsgIds {
MsgId_RequestTransferList = 1;
MsgId_RequestControlDownload = 2;
MsgId_RequestShareDirList = 3;
}
enum ResponseMsgIds {
MsgId_ResponseTransferList = 1;
MsgId_ResponseControlDownload = 2;
MsgId_ResponseShareDirList = 3;
}
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// Building Blocks
enum Direction {
DIRECTION_UPLOAD = 1;
DIRECTION_DOWNLOAD = 2;
}
enum TransferState {
TRANSFER_FAILED = 1;
TRANSFER_OKAY = 2;
TRANSFER_PAUSED = 3;
TRANSFER_QUEUED = 4;
TRANSFER_WAITING = 5;
TRANSFER_DOWNLOADING = 6;
TRANSFER_CHECKING_HASH = 7;
TRANSFER_COMPLETE = 8;
}
message FileTransfer {
required rsctrl.core.File file = 1;
required Direction direction = 2;
required float fraction = 3;
required float rate_kBs = 4;
required TransferState state = 5;
}
///////////////////////////////////////////////////////////////
// Transfer List.
// REQUEST: RequestTransferList
message RequestTransferList {
required Direction direction = 1;
}
// RESPONSE: ResponseTransferList
message ResponseTransferList {
required rsctrl.core.Status status = 1;
repeated FileTransfer transfers = 2;
}
///////////////////////////////////////////////////////////////
// Download.
// REQUEST: RequestControlDownload
// START requires name, hash & size.
// other actions only require file hash.
message RequestControlDownload {
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 Action action = 2;
}
// RESPONSE: ResponseControlDownload
message ResponseControlDownload {
required rsctrl.core.Status status = 1;
}
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// SHARED FILES
// REQUEST: RequestShareDirList
message RequestShareDirList {
required string ssl_id = 1;
required string path = 2;
}
// RESPONSE: ResponseShareDirList
message ResponseShareDirList {
required rsctrl.core.Status status = 1;
enum ListType {
DIRQUERY_ROOT = 1; // the query refers to root.
DIRQUERY_PERSON = 2; // the query refers to person
DIRQUERY_FILE = 3; // the query refers to a file.
DIRQUERY_DIR = 4; // move to top of queue.
}
required string ssl_id = 2;
required string path = 3;
required ListType list_type = 4;
repeated rsctrl.core.File files = 5;
}
//// REQUEST: RequestChangeShares
//
//// REQUEST: RequestLiCloseSearch
//// REQUEST: RequestCloseSearch
//
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////