blob: 56a8e9e167aa8c143feeac0f8a6d3f8700d50b4b [file] [log] [blame]
syntax = "proto3";
package pcloud.api;
option go_package = "api";
enum ChunkStatus {
NEW = 0;
CREATED = 1;
WRITING = 2;
REPLICATING = 3;
READY = 4;
}
enum ReplicaRole {
SECONDARY = 0;
PRIMARY = 1;
}
// ChunkStorage
service ChunkStorage {
rpc ListChunks(ListChunksRequest) returns (ListChunksResponse) {}
rpc CreateChunk(CreateChunkRequest) returns (CreateChunkResponse) {}
rpc GetChunkStatus(GetChunkStatusRequest) returns (GetChunkStatusResponse) {}
rpc ReadChunk(ReadChunkRequest) returns (ReadChunkResponse) {}
rpc WriteChunk(WriteChunkRequest) returns (WriteChunkResponse) {}
rpc RemoveChunk(RemoveChunkRequest) returns (RemoveChunkResponse) {}
}
message ListChunksRequest {
}
message ListChunksResponse {
repeated string chunk_id = 1;
}
message CreateChunkRequest {
string chunk_id = 1;
int32 size = 2;
ReplicaRole role = 3;
string primary_address = 4;
}
message CreateChunkResponse {
}
message GetChunkStatusRequest {
string chunk_id = 1;
}
message GetChunkStatusResponse {
ChunkStatus status = 1;
int32 total_bytes = 2;
int32 committed_bytes = 3;
}
message ReadChunkRequest {
string chunk_id = 1;
int32 offset = 2;
int32 num_bytes = 3;
}
message ReadChunkResponse {
bytes data = 1;
}
message WriteChunkRequest {
string chunk_id = 1;
int32 offset = 2;
bytes data = 3;
}
message WriteChunkResponse {
int32 bytes_written = 1;
}
message RemoveChunkRequest {
string chunk_id = 1;
}
message RemoveChunkResponse {
}
// MetadataStorage
message ChunkStorageMetadata {
string chunk_id = 1;
int32 size_bytes = 2;
repeated string server = 3;
}
service MetadataStorage {
rpc AddChunkServer(AddChunkServerRequest) returns (AddChunkServerResponse) {}
rpc CreateBlob(CreateBlobRequest) returns (CreateBlobResponse) {}
rpc GetBlobMetadata(GetBlobMetadataRequest) returns (GetBlobMetadataResponse) {}
}
message AddChunkServerRequest {
string address = 1;
}
message AddChunkServerResponse {
}
message CreateBlobRequest {
int32 size_bytes = 1;
int32 chunk_size_bytes = 2;
int32 num_replicas = 3;
}
message CreateBlobResponse {
string blob_id = 1;
repeated ChunkStorageMetadata chunk = 2;
}
message GetBlobMetadataRequest {
string blob_id = 1;
}
message GetBlobMetadataResponse {
string blob_id = 1;
int32 size_bytes = 2;
repeated ChunkStorageMetadata chunk = 3;
}