82 lines
1.8 KiB
Protocol Buffer
82 lines
1.8 KiB
Protocol Buffer
|
// Copyright (C) 2019 Storj Labs, Inc.
|
||
|
// See LICENSE for copying information.
|
||
|
|
||
|
syntax = "proto3";
|
||
|
option go_package = "pb";
|
||
|
|
||
|
package piecestore;
|
||
|
|
||
|
import "gogo.proto";
|
||
|
import "orders.proto";
|
||
|
|
||
|
service Piecestore {
|
||
|
rpc Upload(stream PieceUploadRequest) returns (PieceUploadResponse) {}
|
||
|
rpc Download(stream PieceDownloadRequest) returns (stream PieceDownloadResponse) {}
|
||
|
rpc Delete(PieceDeleteRequest) returns (PieceDeleteResponse) {}
|
||
|
}
|
||
|
|
||
|
// Expected order of messages from uplink:
|
||
|
// OrderLimit ->
|
||
|
// repeated
|
||
|
// Order ->
|
||
|
// Chunk ->
|
||
|
// PieceHash signed by uplink ->
|
||
|
// <- PieceHash signed by storage node
|
||
|
//
|
||
|
message PieceUploadRequest {
|
||
|
// first message to show that we are allowed to upload
|
||
|
orders.OrderLimit2 limit = 1;
|
||
|
// order for uploading
|
||
|
orders.Order2 order = 2;
|
||
|
|
||
|
// data message
|
||
|
message Chunk {
|
||
|
int64 offset = 1;
|
||
|
bytes data = 2;
|
||
|
}
|
||
|
Chunk chunk = 3;
|
||
|
// final message
|
||
|
orders.PieceHash done = 4;
|
||
|
}
|
||
|
|
||
|
message PieceUploadResponse {
|
||
|
orders.PieceHash done = 1;
|
||
|
}
|
||
|
|
||
|
// Expected order of messages from uplink:
|
||
|
// {OrderLimit, Chunk} ->
|
||
|
// go repeated
|
||
|
// Order -> (async)
|
||
|
// go repeated
|
||
|
// <- PieceDownloadResponse.Chunk
|
||
|
message PieceDownloadRequest {
|
||
|
// first message to show that we are allowed to upload
|
||
|
orders.OrderLimit2 limit = 1;
|
||
|
// order for downloading
|
||
|
orders.Order2 order = 2;
|
||
|
|
||
|
// Chunk that we wish to download
|
||
|
message Chunk {
|
||
|
int64 offset = 1;
|
||
|
int64 chunk_size = 2;
|
||
|
}
|
||
|
|
||
|
// request for the chunk
|
||
|
Chunk chunk = 3;
|
||
|
}
|
||
|
|
||
|
message PieceDownloadResponse {
|
||
|
// Chunk response for download request
|
||
|
message Chunk {
|
||
|
int64 offset = 1;
|
||
|
bytes data = 2;
|
||
|
}
|
||
|
Chunk chunk = 1;
|
||
|
}
|
||
|
|
||
|
message PieceDeleteRequest {
|
||
|
orders.OrderLimit2 limit = 1;
|
||
|
}
|
||
|
|
||
|
message PieceDeleteResponse {
|
||
|
}
|