refactor(tvix/store/fuse): use Arc<dyn …> instead of generics
Change-Id: I5685379bd6f89d17da6843d31bef4c1fc4dc0a18 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8745 Autosubmit: flokli <flokli@flokli.de> Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
This commit is contained in:
		
							parent
							
								
									38a7caaada
								
							
						
					
					
						commit
						09c5ca0a0d
					
				
					 2 changed files with 17 additions and 11 deletions
				
			
		| 
						 | 
					@ -190,7 +190,11 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
 | 
				
			||||||
                GRPCPathInfoService::from_client(path_info_service_client.clone());
 | 
					                GRPCPathInfoService::from_client(path_info_service_client.clone());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            tokio::task::spawn_blocking(move || {
 | 
					            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, &[])
 | 
					                fuser::mount2(f, &dest, &[])
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
            .await??
 | 
					            .await??
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,24 +1,26 @@
 | 
				
			||||||
use crate::{
 | 
					use crate::{
 | 
				
			||||||
    blobservice::BlobService, directoryservice::DirectoryService, pathinfoservice::PathInfoService,
 | 
					    blobservice::BlobService, directoryservice::DirectoryService, pathinfoservice::PathInfoService,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					use std::sync::Arc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub struct FUSE<BS: BlobService, DS: DirectoryService, PS: PathInfoService> {
 | 
					pub struct FUSE<PS: PathInfoService> {
 | 
				
			||||||
    blob_service: BS,
 | 
					    blob_service: Arc<dyn BlobService>,
 | 
				
			||||||
    directory_service: DS,
 | 
					    directory_service: Arc<dyn DirectoryService>,
 | 
				
			||||||
    path_info_service: PS,
 | 
					    path_info_service: PS,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl<BS: BlobService, DS: DirectoryService, PS: PathInfoService> FUSE<BS, DS, PS> {
 | 
					impl<PS: PathInfoService> FUSE<PS> {
 | 
				
			||||||
    pub fn new(path_info_service: PS, directory_service: DS, blob_service: BS) -> Self {
 | 
					    pub fn new(
 | 
				
			||||||
 | 
					        blob_service: Arc<dyn BlobService>,
 | 
				
			||||||
 | 
					        directory_service: Arc<dyn DirectoryService>,
 | 
				
			||||||
 | 
					        path_info_service: PS,
 | 
				
			||||||
 | 
					    ) -> Self {
 | 
				
			||||||
        Self {
 | 
					        Self {
 | 
				
			||||||
            blob_service,
 | 
					            blob_service,
 | 
				
			||||||
            path_info_service,
 | 
					 | 
				
			||||||
            directory_service,
 | 
					            directory_service,
 | 
				
			||||||
 | 
					            path_info_service,
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl<BS: BlobService, DS: DirectoryService, PS: PathInfoService> fuser::Filesystem
 | 
					impl<PS: PathInfoService> fuser::Filesystem for FUSE<PS> {}
 | 
				
			||||||
    for FUSE<BS, DS, PS>
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue