refactor(tvix/store/pathinfosvc): inline GRPCPathInfoSvc::from_url

Change-Id: Ib53b5525ae13c276e61b7f564673b7c6144ffc0e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10025
Tested-by: BuildkiteCI
Reviewed-by: Connor Brewster <cbrewster@hey.com>
This commit is contained in:
Florian Klink 2023-11-13 12:10:30 +02:00 committed by flokli
parent 362117fbf5
commit f57fd16d6e
2 changed files with 27 additions and 28 deletions

View file

@ -2,11 +2,9 @@ use super::PathInfoService;
use crate::proto::{self, ListPathInfoRequest, PathInfo};
use async_stream::try_stream;
use futures::Stream;
use std::{pin::Pin, sync::Arc};
use std::pin::Pin;
use tonic::{async_trait, transport::Channel, Code};
use tvix_castore::{
blobservice::BlobService, directoryservice::DirectoryService, proto as castorepb, Error,
};
use tvix_castore::{proto as castorepb, Error};
/// Connects to a (remote) tvix-store PathInfoService over gRPC.
#[derive(Clone)]
@ -24,23 +22,6 @@ impl GRPCPathInfoService {
) -> Self {
Self { grpc_client }
}
/// Constructs a [GRPCPathInfoService] from the passed [url::Url]:
/// - scheme has to match `grpc+*://`.
/// That's normally grpc+unix for unix sockets, and grpc+http(s) for the HTTP counterparts.
/// - In the case of unix sockets, there must be a path, but may not be a host.
/// - In the case of non-unix sockets, there must be a host, but no path.
/// The blob_service and directory_service arguments are ignored, because the gRPC service already provides answers to these questions.
pub fn from_url(
url: &url::Url,
_blob_service: Arc<dyn BlobService>,
_directory_service: Arc<dyn DirectoryService>,
) -> Result<Self, tvix_castore::Error> {
let channel = tvix_castore::channel::from_url(url)?;
Ok(Self::from_client(
proto::path_info_service_client::PathInfoServiceClient::new(channel),
))
}
}
#[async_trait]
@ -198,8 +179,11 @@ mod tests {
let grpc_client = {
let url = url::Url::parse(&format!("grpc+unix://{}", socket_path.display()))
.expect("must parse");
GRPCPathInfoService::from_url(&url, gen_blob_service(), gen_directory_service())
.expect("must succeed")
let client = PathInfoServiceClient::new(
tvix_castore::channel::from_url(&url).expect("must succeed"),
);
GRPCPathInfoService::from_client(client)
};
let path_info = grpc_client