diff options
-rw-r--r-- | tvix/store/src/bin/tvix-store.rs | 6 | ||||
-rw-r--r-- | tvix/store/src/fuse/mod.rs | 22 |
2 files changed, 17 insertions, 11 deletions
diff --git a/tvix/store/src/bin/tvix-store.rs b/tvix/store/src/bin/tvix-store.rs index 8cd87abe9c8c..ae72559d3943 100644 --- a/tvix/store/src/bin/tvix-store.rs +++ b/tvix/store/src/bin/tvix-store.rs @@ -190,7 +190,11 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { GRPCPathInfoService::from_client(path_info_service_client.clone()); tokio::task::spawn_blocking(move || { - let f = FUSE::new(path_info_service, directory_service, blob_service); + let f = FUSE::new( + Arc::new(blob_service), + Arc::new(directory_service), + path_info_service, + ); fuser::mount2(f, &dest, &[]) }) .await?? diff --git a/tvix/store/src/fuse/mod.rs b/tvix/store/src/fuse/mod.rs index a93f482ebff6..d28e2b309c43 100644 --- a/tvix/store/src/fuse/mod.rs +++ b/tvix/store/src/fuse/mod.rs @@ -1,24 +1,26 @@ use crate::{ blobservice::BlobService, directoryservice::DirectoryService, pathinfoservice::PathInfoService, }; +use std::sync::Arc; -pub struct FUSE<BS: BlobService, DS: DirectoryService, PS: PathInfoService> { - blob_service: BS, - directory_service: DS, +pub struct FUSE<PS: PathInfoService> { + blob_service: Arc<dyn BlobService>, + directory_service: Arc<dyn DirectoryService>, path_info_service: PS, } -impl<BS: BlobService, DS: DirectoryService, PS: PathInfoService> FUSE<BS, DS, PS> { - pub fn new(path_info_service: PS, directory_service: DS, blob_service: BS) -> Self { +impl<PS: PathInfoService> FUSE<PS> { + pub fn new( + blob_service: Arc<dyn BlobService>, + directory_service: Arc<dyn DirectoryService>, + path_info_service: PS, + ) -> Self { Self { blob_service, - path_info_service, directory_service, + path_info_service, } } } -impl<BS: BlobService, DS: DirectoryService, PS: PathInfoService> fuser::Filesystem - for FUSE<BS, DS, PS> -{ -} +impl<PS: PathInfoService> fuser::Filesystem for FUSE<PS> {} |