refactor(tvix/store/pathinfosvc): add from_addr
Change-Id: I24e822351a837fce2aed568a647d009099ef32ec Reviewed-on: https://cl.tvl.fyi/c/depot/+/8747 Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
This commit is contained in:
parent
bb7c76739a
commit
35bff2bda6
6 changed files with 552 additions and 18 deletions
|
|
@ -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<dyn BlobService>,
|
||||
directory_service: Arc<dyn DirectoryService>,
|
||||
) -> Result<Self, Error>
|
||||
where
|
||||
Self: Sized;
|
||||
|
||||
/// Retrieve a PathInfo message by the output digest.
|
||||
fn get(&self, digest: [u8; 20]) -> Result<Option<proto::PathInfo>, Error>;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue