diff options
author | Florian Klink <flokli@flokli.de> | 2023-12-31T14·33+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-12-31T22·23+0000 |
commit | f6d1a56c8c2446b97e4147980a842d0a9de04e75 (patch) | |
tree | 30987edd3926e11d8b8dc658a97e4a3bef0ca9bf /tvix/store/src/utils.rs | |
parent | 41935fab702f534ce7b787ef5f6e9f2ac2e7ce00 (diff) |
refactor(tvix/store): move construct_services helper here r/7295
This takes three URLs, and constructs Arc'ed {Blob,Directory,PathInfo}Service, allowing to remove some of the boilerplate. Change-Id: I40e7c2b551442ef2acdc543dfc87ab97e7c742bb Reviewed-on: https://cl.tvl.fyi/c/depot/+/10484 Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Diffstat (limited to 'tvix/store/src/utils.rs')
-rw-r--r-- | tvix/store/src/utils.rs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tvix/store/src/utils.rs b/tvix/store/src/utils.rs new file mode 100644 index 000000000000..041a9e683d59 --- /dev/null +++ b/tvix/store/src/utils.rs @@ -0,0 +1,35 @@ +use std::sync::Arc; + +use tvix_castore::{ + blobservice::{self, BlobService}, + directoryservice::{self, DirectoryService}, +}; + +use crate::pathinfoservice::{self, PathInfoService}; + +/// Construct the three store handles from their addrs. +pub async fn construct_services( + blob_service_addr: impl AsRef<str>, + directory_service_addr: impl AsRef<str>, + path_info_service_addr: impl AsRef<str>, +) -> std::io::Result<( + Arc<dyn BlobService>, + Arc<dyn DirectoryService>, + Box<dyn PathInfoService>, +)> { + let blob_service: Arc<dyn BlobService> = blobservice::from_addr(blob_service_addr.as_ref()) + .await? + .into(); + let directory_service: Arc<dyn DirectoryService> = + directoryservice::from_addr(directory_service_addr.as_ref()) + .await? + .into(); + let path_info_service = pathinfoservice::from_addr( + path_info_service_addr.as_ref(), + blob_service.clone(), + directory_service.clone(), + ) + .await?; + + Ok((blob_service, directory_service, path_info_service)) +} |