refactor(tvix/[ca]store): use auto_impl
This implements BS, DS, PS for Box'ed or Arc'ed variants of it with less code, and less potential to accidentially forget to proxy default trait methods for blanked impls, as fixed in cl/12658. Change-Id: If2cdbb563a73792038ebe7bff45d6f880214855b Reviewed-on: https://cl.tvl.fyi/c/depot/+/12661 Tested-by: BuildkiteCI Autosubmit: flokli <flokli@flokli.de> Reviewed-by: edef <edef@edef.eu>
This commit is contained in:
parent
47efebfc6f
commit
9c22345019
16 changed files with 85 additions and 99 deletions
|
|
@ -45,8 +45,8 @@ fn do_mount<P: AsRef<Path>, BS, DS>(
|
|||
show_xattr: bool,
|
||||
) -> io::Result<FuseDaemon>
|
||||
where
|
||||
BS: AsRef<dyn BlobService> + Send + Sync + Clone + 'static,
|
||||
DS: AsRef<dyn DirectoryService> + Send + Sync + Clone + 'static,
|
||||
BS: BlobService + Send + Sync + Clone + 'static,
|
||||
DS: DirectoryService + Send + Sync + Clone + 'static,
|
||||
{
|
||||
let fs = TvixStoreFs::new(
|
||||
blob_service,
|
||||
|
|
|
|||
|
|
@ -121,8 +121,8 @@ pub struct TvixStoreFs<BS, DS, RN> {
|
|||
|
||||
impl<BS, DS, RN> TvixStoreFs<BS, DS, RN>
|
||||
where
|
||||
BS: AsRef<dyn BlobService> + Clone + Send,
|
||||
DS: AsRef<dyn DirectoryService> + Clone + Send + 'static,
|
||||
BS: BlobService + Clone + Send,
|
||||
DS: DirectoryService + Clone + Send + 'static,
|
||||
RN: RootNodes + Clone + 'static,
|
||||
{
|
||||
pub fn new(
|
||||
|
|
@ -186,7 +186,7 @@ where
|
|||
.block_on({
|
||||
let directory_service = self.directory_service.clone();
|
||||
let parent_digest = parent_digest.to_owned();
|
||||
async move { directory_service.as_ref().get(&parent_digest).await }
|
||||
async move { directory_service.get(&parent_digest).await }
|
||||
})?
|
||||
.ok_or_else(|| {
|
||||
warn!(directory.digest=%parent_digest, "directory not found");
|
||||
|
|
@ -302,8 +302,8 @@ const XATTR_NAME_BLOB_DIGEST: &[u8] = b"user.tvix.castore.blob.digest";
|
|||
|
||||
impl<BS, DS, RN> Layer for TvixStoreFs<BS, DS, RN>
|
||||
where
|
||||
BS: AsRef<dyn BlobService> + Clone + Send + 'static,
|
||||
DS: AsRef<dyn DirectoryService> + Send + Clone + 'static,
|
||||
BS: BlobService + Clone + Send + 'static,
|
||||
DS: DirectoryService + Send + Clone + 'static,
|
||||
RN: RootNodes + Clone + 'static,
|
||||
{
|
||||
fn root_inode(&self) -> Self::Inode {
|
||||
|
|
@ -313,8 +313,8 @@ where
|
|||
|
||||
impl<BS, DS, RN> FileSystem for TvixStoreFs<BS, DS, RN>
|
||||
where
|
||||
BS: AsRef<dyn BlobService> + Clone + Send + 'static,
|
||||
DS: AsRef<dyn DirectoryService> + Send + Clone + 'static,
|
||||
BS: BlobService + Clone + Send + 'static,
|
||||
DS: DirectoryService + Send + Clone + 'static,
|
||||
RN: RootNodes + Clone + 'static,
|
||||
{
|
||||
type Handle = u64;
|
||||
|
|
@ -674,7 +674,7 @@ where
|
|||
match self.tokio_handle.block_on({
|
||||
let blob_service = self.blob_service.clone();
|
||||
let blob_digest = blob_digest.clone();
|
||||
async move { blob_service.as_ref().open_read(&blob_digest).await }
|
||||
async move { blob_service.open_read(&blob_digest).await }
|
||||
}) {
|
||||
Ok(None) => {
|
||||
warn!("blob not found");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue