diff options
author | Florian Klink <flokli@flokli.de> | 2024-03-27T09·23+0100 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2024-03-27T14·56+0000 |
commit | bfc5b209a68d8668939bc20b89b9ecd7dd6b6b6d (patch) | |
tree | fd2e2f2aa6852515b7424a40f29c6ad969482a26 | |
parent | ac88c52be301c0173f595a06a5685b26451c8573 (diff) |
feat(tvix/store): AsRef<dyn PathInfoService> impl PathInfoService r/7786
Change-Id: I7fc06ae97a50d04b8c36292b3457c112242a7a70 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11270 Tested-by: BuildkiteCI Autosubmit: flokli <flokli@flokli.de> Reviewed-by: Connor Brewster <cbrewster@hey.com>
-rw-r--r-- | tvix/store/src/pathinfoservice/mod.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tvix/store/src/pathinfoservice/mod.rs b/tvix/store/src/pathinfoservice/mod.rs index 55ada92b7e88..1f52d20caed7 100644 --- a/tvix/store/src/pathinfoservice/mod.rs +++ b/tvix/store/src/pathinfoservice/mod.rs @@ -50,3 +50,28 @@ pub trait PathInfoService: Send + Sync { /// [async_trait] generates, but for streams instead of futures. fn list(&self) -> BoxStream<'static, Result<PathInfo, Error>>; } + +#[async_trait] +impl<A> PathInfoService for A +where + A: AsRef<dyn PathInfoService> + Send + Sync, +{ + async fn get(&self, digest: [u8; 20]) -> Result<Option<PathInfo>, Error> { + self.as_ref().get(digest).await + } + + async fn put(&self, path_info: PathInfo) -> Result<PathInfo, Error> { + self.as_ref().put(path_info).await + } + + async fn calculate_nar( + &self, + root_node: &castorepb::node::Node, + ) -> Result<(u64, [u8; 32]), Error> { + self.as_ref().calculate_nar(root_node).await + } + + fn list(&self) -> BoxStream<'static, Result<PathInfo, Error>> { + self.as_ref().list() + } +} |