erigon-pulse/interfaces/downloader/downloader.proto
Alex Sharov 14f53eefaf
Downloader: calc stat inside, add --torrent.download.slots and limit downloads inside (#432)
* Remove interfaces for replacement

* Squashed 'interfaces/' content from commit cb09f4f

git-subtree-dir: interfaces
git-subtree-split: cb09f4fd4eb9caccf7ece5b5ba05b380a4ce9e33

* save

* save

* Squashed 'interfaces/' content from commit f4847ba

git-subtree-dir: interfaces
git-subtree-split: f4847baccf2c5e35e955f14cbee428f90111dfbf

* save

* save

* Squashed 'interfaces/' content from commit 17196d5

git-subtree-dir: interfaces
git-subtree-split: 17196d54cff8233b1c0c5eadc2f806ac260c2e9d

* save
2022-04-28 09:08:26 +07:00

47 lines
1.1 KiB
Protocol Buffer

syntax = "proto3";
import "google/protobuf/empty.proto";
import "types/types.proto";
option go_package = "./downloader;downloader";
package downloader;
service Downloader {
rpc Download (DownloadRequest) returns (google.protobuf.Empty) {}
rpc Stats (StatsRequest) returns (StatsReply) {}
}
message DownloadItem {
string path = 1;
types.H160 torrent_hash = 2; // single hash will be resolved as magnet link
}
message DownloadRequest {
repeated DownloadItem items = 1; // single hash will be resolved as magnet link
}
message StatsRequest {
}
message StatsReply {
// First step on startup - "resolve metadata":
// - understand total amount of data to download
// - ensure all pieces hashes available
// - validate files after crush
// - when all metadata ready - can start download/upload
int32 metadataReady = 1;
int32 filesTotal = 2;
int32 peersUnique = 4;
uint64 connectionsTotal = 5;
bool completed = 6;
float progress = 7;
uint64 bytesCompleted = 8;
uint64 bytesTotal = 9;
uint64 uploadRate = 10; // bytes/sec
uint64 downloadRate = 11; // bytes/sec
}