feat(tvix/castore): AsRef<dyn DirectoryService> impl DirectoryService
This allows us to use containers around DirectoryServices as DirectoryServices too. Change-Id: I56cca27b3212858db8b12b874df0e567dd868711 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11248 Reviewed-by: raitobezarius <tvl@lahfa.xyz> Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
This commit is contained in:
parent
21fcc1c9df
commit
6f5474bf02
1 changed files with 25 additions and 0 deletions
|
@ -63,6 +63,31 @@ pub trait DirectoryService: Send + Sync {
|
||||||
fn put_multiple_start(&self) -> Box<dyn DirectoryPutter>;
|
fn put_multiple_start(&self) -> Box<dyn DirectoryPutter>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[async_trait]
|
||||||
|
impl<A> DirectoryService for A
|
||||||
|
where
|
||||||
|
A: AsRef<dyn DirectoryService> + Send + Sync,
|
||||||
|
{
|
||||||
|
async fn get(&self, digest: &B3Digest) -> Result<Option<proto::Directory>, Error> {
|
||||||
|
self.as_ref().get(digest).await
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn put(&self, directory: proto::Directory) -> Result<B3Digest, Error> {
|
||||||
|
self.as_ref().put(directory).await
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_recursive(
|
||||||
|
&self,
|
||||||
|
root_directory_digest: &B3Digest,
|
||||||
|
) -> BoxStream<Result<proto::Directory, Error>> {
|
||||||
|
self.as_ref().get_recursive(root_directory_digest)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn put_multiple_start(&self) -> Box<dyn DirectoryPutter> {
|
||||||
|
self.as_ref().put_multiple_start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Provides a handle to put a closure of connected [proto::Directory] elements.
|
/// Provides a handle to put a closure of connected [proto::Directory] elements.
|
||||||
///
|
///
|
||||||
/// The consumer can periodically call [DirectoryPutter::put], starting from the
|
/// The consumer can periodically call [DirectoryPutter::put], starting from the
|
||||||
|
|
Loading…
Reference in a new issue