blob: 6640afdc69f50e5e2e5ce8342edb87f4013f16c7 [file] [log] [blame]
syntax = "proto3";
package pcloud.api;
option go_package = "api";
message Chunk {
string chunk_id = 1;
int32 size_bytes = 2;
bytes data = 3;
}
// ChunkStorage
service ChunkStorage {
rpc ListChunks(ListChunksRequest) returns (ListChunksResponse) {}
rpc ReadChunk(ReadChunkRequest) returns (ReadChunkResponse) {}
rpc StoreChunk(StoreChunkRequest) returns (StoreChunkResponse) {}
rpc RemoveChunk(RemoveChunkRequest) returns (RemoveChunkResponse) {}
rpc ReplicateChunk(ReplicateChunkRequest) returns (ReplicateChunkResponse) {}
}
message ListChunksRequest {
}
message ListChunksResponse {
repeated string chunk_id = 1;
}
message ReadChunkRequest {
string chunk_id = 1;
int32 offset = 2;
int32 num_bytes = 3;
}
message ReadChunkResponse {
bytes data = 1;
}
message StoreChunkRequest {
string chunk_id = 1;
bytes data = 2;
}
message StoreChunkResponse {
}
message RemoveChunkRequest {
string chunk_id = 1;
}
message RemoveChunkResponse {
}
message ReplicateChunkRequest {
string chunk_id = 1;
string primary_chunk_server = 2;
}
message ReplicateChunkResponse {
}
// 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;
}