refactor(tvix/store): use Box<dyn DirectoryService>

Once we support configuring services at runtime, we don't know what
DirectoryService we're using at compile time.

This also means, we can't explicitly use the is_closed method from
GRPCPutter, without making it part of the DirectoryPutter itself.

Change-Id: Icd2a1ec4fc5649a6cd15c9cc7db4c2b473630431
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8727
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
This commit is contained in:
Florian Klink 2023-06-09 12:26:34 +03:00 committed by clbot
parent 6f85dbfc06
commit 7725eb53ad
18 changed files with 144 additions and 126 deletions

View file

@ -10,8 +10,8 @@ use tracing::{instrument, warn};
/// TODO: the name of this function (and mod) is a bit bad, because it doesn't
/// clearly distinguish it from the BFS traversers.
#[instrument(skip(directory_service))]
pub fn traverse_to<DS: DirectoryService>(
directory_service: &DS,
pub fn traverse_to(
directory_service: &Box<dyn DirectoryService>,
node: crate::proto::node::Node,
path: &std::path::Path,
) -> Result<Option<crate::proto::node::Node>, Error> {
@ -82,13 +82,9 @@ pub fn traverse_to<DS: DirectoryService>(
mod tests {
use std::path::PathBuf;
use crate::{
directoryservice::DirectoryPutter,
directoryservice::DirectoryService,
tests::{
fixtures::{DIRECTORY_COMPLICATED, DIRECTORY_WITH_KEEP},
utils::gen_directory_service,
},
use crate::tests::{
fixtures::{DIRECTORY_COMPLICATED, DIRECTORY_WITH_KEEP},
utils::gen_directory_service,
};
use super::traverse_to;