diff options
author | Florian Klink <flokli@flokli.de> | 2022-10-29T11·27+0200 |
---|---|---|
committer | flokli <flokli@flokli.de> | 2022-12-15T19·10+0000 |
commit | 5f9796cf9411028451ffc39ffe2c7ab52fd4d337 (patch) | |
tree | 1d2c15222124174fbe7c707f9d2fc1bd9cd37c59 | |
parent | 64f812b2f0ecd1b6759d8f2e4a9f05905f52e99d (diff) |
feat(tvix/proto): add rpc_blobstore r/5422
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>
-rw-r--r-- | tvix/store/build.rs | 1 | ||||
-rw-r--r-- | tvix/store/default.nix | 1 | ||||
-rw-r--r-- | tvix/store/protos/rpc_blobstore.proto | 32 |
3 files changed, 34 insertions, 0 deletions
diff --git a/tvix/store/build.rs b/tvix/store/build.rs index cc0bf22930a1..4c2e7d59d61b 100644 --- a/tvix/store/build.rs +++ b/tvix/store/build.rs @@ -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 diff --git a/tvix/store/default.nix b/tvix/store/default.nix index 8fb80ee27bb6..23916c6b57f6 100644 --- a/tvix/store/default.nix +++ b/tvix/store/default.nix @@ -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 ]; diff --git a/tvix/store/protos/rpc_blobstore.proto b/tvix/store/protos/rpc_blobstore.proto new file mode 100644 index 000000000000..49a6b974f061 --- /dev/null +++ b/tvix/store/protos/rpc_blobstore.proto @@ -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; +} |