From 5aa9b29d8cdf870ee6f3ad01a874604ff9f93e45 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Mon, 15 Jan 2024 19:07:18 +0200 Subject: feat(tvix/build): add gRPC client Change-Id: I0d917a9a308227b13d096def22945db917830d18 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10629 Reviewed-by: raitobezarius Autosubmit: flokli Tested-by: BuildkiteCI --- tvix/Cargo.nix | 1 + tvix/build/Cargo.toml | 2 +- tvix/build/src/buildservice/grpc.rs | 28 ++++++++++++++++++++++++++++ tvix/build/src/buildservice/mod.rs | 2 ++ 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 tvix/build/src/buildservice/grpc.rs (limited to 'tvix') diff --git a/tvix/Cargo.nix b/tvix/Cargo.nix index a67738397f66..71f456290d1d 100644 --- a/tvix/Cargo.nix +++ b/tvix/Cargo.nix @@ -10240,6 +10240,7 @@ rec { { name = "tonic"; packageId = "tonic 0.10.2"; + features = [ "tls" "tls-roots" ]; } { name = "tonic-reflection"; diff --git a/tvix/build/Cargo.toml b/tvix/build/Cargo.toml index 2782128db301..52dcf0abec0c 100644 --- a/tvix/build/Cargo.toml +++ b/tvix/build/Cargo.toml @@ -8,7 +8,7 @@ bytes = "1.4.0" itertools = "0.12.0" prost = "0.12.1" thiserror = "1.0.56" -tonic = "0.10.2" +tonic = { version = "0.10.2", features = ["tls", "tls-roots"] } tvix-castore = { path = "../castore" } tracing = "0.1.37" diff --git a/tvix/build/src/buildservice/grpc.rs b/tvix/build/src/buildservice/grpc.rs new file mode 100644 index 000000000000..9d22d8397abf --- /dev/null +++ b/tvix/build/src/buildservice/grpc.rs @@ -0,0 +1,28 @@ +use tonic::{async_trait, transport::Channel}; + +use crate::proto::{build_service_client::BuildServiceClient, Build, BuildRequest}; + +use super::BuildService; + +pub struct GRPCBuildService { + client: BuildServiceClient, +} + +impl GRPCBuildService { + #[allow(dead_code)] + pub fn from_client(client: BuildServiceClient) -> Self { + Self { client } + } +} + +#[async_trait] +impl BuildService for GRPCBuildService { + async fn do_build(&self, request: BuildRequest) -> std::io::Result { + let mut client = self.client.clone(); + client + .do_build(request) + .await + .map(|resp| resp.into_inner()) + .map_err(std::io::Error::other) + } +} diff --git a/tvix/build/src/buildservice/mod.rs b/tvix/build/src/buildservice/mod.rs index cd0b7eb5d70f..cbee221a5e23 100644 --- a/tvix/build/src/buildservice/mod.rs +++ b/tvix/build/src/buildservice/mod.rs @@ -3,6 +3,8 @@ use tonic::async_trait; use crate::proto::{Build, BuildRequest}; mod dummy; +mod grpc; + pub use dummy::DummyBuildService; #[async_trait] -- cgit 1.4.1