about summary refs log tree commit diff
path: root/tvix/store
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/store')
-rw-r--r--tvix/store/src/pathinfoservice/grpc.rs9
-rw-r--r--tvix/store/src/pathinfoservice/mod.rs6
2 files changed, 14 insertions, 1 deletions
diff --git a/tvix/store/src/pathinfoservice/grpc.rs b/tvix/store/src/pathinfoservice/grpc.rs
index d292b2a784f6..453044cba13d 100644
--- a/tvix/store/src/pathinfoservice/grpc.rs
+++ b/tvix/store/src/pathinfoservice/grpc.rs
@@ -8,7 +8,7 @@ use futures::stream::BoxStream;
 use nix_compat::nixbase32;
 use std::sync::Arc;
 use tonic::{async_trait, Code};
-use tracing::{instrument, Span};
+use tracing::{instrument, warn, Span};
 use tracing_indicatif::span_ext::IndicatifSpanExt;
 use tvix_castore::composition::{CompositionContext, ServiceBuilder};
 use tvix_castore::Error;
@@ -95,6 +95,13 @@ where
 
         Box::pin(stream)
     }
+
+    #[instrument(level = "trace", skip_all)]
+    fn nar_calculation_service(&self) -> Option<Box<dyn NarCalculationService>> {
+        Some(Box::new(GRPCPathInfoService {
+            grpc_client: self.grpc_client.clone(),
+        }) as Box<dyn NarCalculationService>)
+    }
 }
 
 #[async_trait]
diff --git a/tvix/store/src/pathinfoservice/mod.rs b/tvix/store/src/pathinfoservice/mod.rs
index 0a91d6267260..a0c48f5cc9d5 100644
--- a/tvix/store/src/pathinfoservice/mod.rs
+++ b/tvix/store/src/pathinfoservice/mod.rs
@@ -62,6 +62,8 @@ pub trait PathInfoService: Send + Sync {
     /// [async_trait] generates, but for streams instead of futures.
     fn list(&self) -> BoxStream<'static, Result<PathInfo, Error>>;
 
+    /// Returns a (more) suitable NarCalculationService.
+    /// This can be used to offload NAR calculation to the remote side.
     fn nar_calculation_service(&self) -> Option<Box<dyn NarCalculationService>> {
         None
     }
@@ -83,6 +85,10 @@ where
     fn list(&self) -> BoxStream<'static, Result<PathInfo, Error>> {
         self.as_ref().list()
     }
+
+    fn nar_calculation_service(&self) -> Option<Box<dyn NarCalculationService>> {
+        self.as_ref().nar_calculation_service()
+    }
 }
 
 /// Registers the builtin PathInfoService implementations with the registry