From 7725eb53ad67730e92a3839a6c10925c668e5586 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Fri, 9 Jun 2023 12:26:34 +0300 Subject: refactor(tvix/store): use Box 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 Reviewed-by: tazjin Tested-by: BuildkiteCI --- tvix/store/src/proto/grpc_directoryservice_wrapper.rs | 15 +++++++-------- tvix/store/src/proto/tests/grpc_directoryservice.rs | 4 +--- 2 files changed, 8 insertions(+), 11 deletions(-) (limited to 'tvix/store/src/proto') diff --git a/tvix/store/src/proto/grpc_directoryservice_wrapper.rs b/tvix/store/src/proto/grpc_directoryservice_wrapper.rs index 6d2df310137f..f27688c4e962 100644 --- a/tvix/store/src/proto/grpc_directoryservice_wrapper.rs +++ b/tvix/store/src/proto/grpc_directoryservice_wrapper.rs @@ -1,27 +1,26 @@ use crate::proto; use crate::{directoryservice::DirectoryService, B3Digest}; use std::collections::HashMap; +use std::sync::Arc; use tokio::{sync::mpsc::channel, task}; use tokio_stream::wrappers::ReceiverStream; use tonic::{async_trait, Request, Response, Status, Streaming}; use tracing::{debug, instrument, warn}; -pub struct GRPCDirectoryServiceWrapper { - directory_service: C, +pub struct GRPCDirectoryServiceWrapper { + directory_service: Arc>, } -impl From for GRPCDirectoryServiceWrapper { - fn from(value: DS) -> Self { +impl From> for GRPCDirectoryServiceWrapper { + fn from(value: Box) -> Self { Self { - directory_service: value, + directory_service: Arc::new(value), } } } #[async_trait] -impl - proto::directory_service_server::DirectoryService for GRPCDirectoryServiceWrapper -{ +impl proto::directory_service_server::DirectoryService for GRPCDirectoryServiceWrapper { type GetStream = ReceiverStream>; #[instrument(skip(self))] diff --git a/tvix/store/src/proto/tests/grpc_directoryservice.rs b/tvix/store/src/proto/tests/grpc_directoryservice.rs index 069e82f6463e..a1058706d521 100644 --- a/tvix/store/src/proto/tests/grpc_directoryservice.rs +++ b/tvix/store/src/proto/tests/grpc_directoryservice.rs @@ -1,4 +1,3 @@ -use crate::directoryservice::DirectoryService; use crate::proto::directory_service_server::DirectoryService as GRPCDirectoryService; use crate::proto::get_directory_request::ByWhat; use crate::proto::{Directory, DirectoryNode, SymlinkNode}; @@ -8,8 +7,7 @@ use crate::tests::utils::gen_directory_service; use tokio_stream::StreamExt; use tonic::Status; -fn gen_grpc_service( -) -> GRPCDirectoryServiceWrapper { +fn gen_grpc_service() -> GRPCDirectoryServiceWrapper { let directory_service = gen_directory_service(); GRPCDirectoryServiceWrapper::from(directory_service) } -- cgit 1.4.1