feat(tvix/proto): add rpc_blobstore

This defines a service that can be used to get and put content-addressed
chunks of data.

Change-Id: I36cf2278ed1daf71848c04fdfd14450b2268c5de
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7135
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
This commit is contained in:
Florian Klink 2022-10-29 13:27:00 +02:00 committed by flokli
parent 64f812b2f0
commit 5f9796cf94
3 changed files with 34 additions and 0 deletions

View file

@ -5,6 +5,7 @@ fn main() -> Result<()> {
&[
"tvix/store/protos/castore.proto",
"tvix/store/protos/pathinfo.proto",
"tvix/store/protos/rpc_blobstore.proto",
],
// If we are in running `cargo build` manually, using `../..` works fine,
// but in case we run inside a nix build, we need to instead point PROTO_ROOT

View file

@ -4,6 +4,7 @@ let
protoRoot = depot.nix.sparseTree depot.path.origSrc [
./protos/castore.proto
./protos/pathinfo.proto
./protos/rpc_blobstore.proto
];
protobufDep = prev: (prev.nativeBuildInputs or [ ]) ++ [ pkgs.protobuf ];

View file

@ -0,0 +1,32 @@
// SPDX-License-Identifier: MIT
// Copyright © 2022 The Tvix Authors
syntax = "proto3";
package tvix.store.v1;
service BlobService {
rpc Get(GetBlobRequest) returns (GetBlobResponse);
rpc Put(PutBlobRequest) returns (PutBlobResponse);
// TODO(flokli): We can get fancy here, and add methods to retrieve
// [Bao](https://github.com/oconnor663/bao/blob/master/docs/spec.md), and
// then support range requests, but that's left for later.
}
message GetBlobRequest {
// The blake3 digest of the blob requested
bytes digest = 1;
}
message GetBlobResponse {
bytes data = 1;
}
message PutBlobRequest {
bytes data = 1;
}
message PutBlobResponse {
// The blake3 digest of the data that was sent.
bytes digest = 1;
}