about summary refs log tree commit diff
path: root/tvix/build/src
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2024-01-15T17·07+0200
committerclbot <clbot@tvl.fyi>2024-01-15T18·41+0000
commit5aa9b29d8cdf870ee6f3ad01a874604ff9f93e45 (patch)
tree413bbe05eafb58e86710544c2fddf7bd1f2226b0 /tvix/build/src
parentc01ec8ee383553344c75cef26f986ac1ae8687e9 (diff)
feat(tvix/build): add gRPC client r/7385
Change-Id: I0d917a9a308227b13d096def22945db917830d18
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10629
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/build/src')
-rw-r--r--tvix/build/src/buildservice/grpc.rs28
-rw-r--r--tvix/build/src/buildservice/mod.rs2
2 files changed, 30 insertions, 0 deletions
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<Channel>,
+}
+
+impl GRPCBuildService {
+    #[allow(dead_code)]
+    pub fn from_client(client: BuildServiceClient<Channel>) -> Self {
+        Self { client }
+    }
+}
+
+#[async_trait]
+impl BuildService for GRPCBuildService {
+    async fn do_build(&self, request: BuildRequest) -> std::io::Result<Build> {
+        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]