From 35bff2bda69d5189d9a439cd2032b86ebb4e6e41 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Mon, 12 Jun 2023 00:04:00 +0300 Subject: refactor(tvix/store/pathinfosvc): add from_addr Change-Id: I24e822351a837fce2aed568a647d009099ef32ec Reviewed-on: https://cl.tvl.fyi/c/depot/+/8747 Reviewed-by: tazjin Autosubmit: flokli Tested-by: BuildkiteCI --- tvix/store/src/pathinfoservice/mod.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'tvix/store/src/pathinfoservice/mod.rs') diff --git a/tvix/store/src/pathinfoservice/mod.rs b/tvix/store/src/pathinfoservice/mod.rs index 937d8f2a1119..191e8dbd602e 100644 --- a/tvix/store/src/pathinfoservice/mod.rs +++ b/tvix/store/src/pathinfoservice/mod.rs @@ -1,9 +1,15 @@ +mod from_addr; mod grpc; mod memory; mod sled; +use std::sync::Arc; + +use crate::blobservice::BlobService; +use crate::directoryservice::DirectoryService; use crate::{proto, Error}; +pub use self::from_addr::from_addr; pub use self::grpc::GRPCPathInfoService; pub use self::memory::MemoryPathInfoService; pub use self::sled::SledPathInfoService; @@ -11,6 +17,17 @@ pub use self::sled::SledPathInfoService; /// The base trait all PathInfo services need to implement. /// This is a simple get and put of [proto::Directory], returning their digest. pub trait PathInfoService: Send + Sync { + /// Create a new instance by passing in a connection URL, as well + /// as instances of a [PathInfoService] and [DirectoryService] (as the + /// [PathInfoService] needs to talk to them). + fn from_url( + url: &url::Url, + blob_service: Arc, + directory_service: Arc, + ) -> Result + where + Self: Sized; + /// Retrieve a PathInfo message by the output digest. fn get(&self, digest: [u8; 20]) -> Result, Error>; -- cgit 1.4.1