Move chunk/master data structures into libs
diff --git a/api/api.proto b/api/api.proto
new file mode 100644
index 0000000..ecd9dde
--- /dev/null
+++ b/api/api.proto
@@ -0,0 +1,90 @@
+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) {}
+}
+
+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 {
+}
+
+// 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;
+}
\ No newline at end of file