chore(tvix/store): Use BoxStream type alias
The BoxStream type alias is a more concise and easier to read than the full `Pin<Box<dyn Stream<Item = ...> + Send + ...>>` type. Change-Id: I5b7bccfd066ded5557e01f7895f4cf5c4a33bd44 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10677 Reviewed-by: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Autosubmit: Connor Brewster <cbrewster@hey.com>
This commit is contained in:
parent
56ba7a72d8
commit
4e341fb5d9
15 changed files with 44 additions and 67 deletions
|
|
@ -1,11 +1,10 @@
|
|||
use std::collections::HashSet;
|
||||
use std::pin::Pin;
|
||||
|
||||
use super::{DirectoryPutter, DirectoryService};
|
||||
use crate::proto::{self, get_directory_request::ByWhat};
|
||||
use crate::{B3Digest, Error};
|
||||
use async_stream::try_stream;
|
||||
use futures::Stream;
|
||||
use futures::stream::BoxStream;
|
||||
use tokio::spawn;
|
||||
use tokio::sync::mpsc::UnboundedSender;
|
||||
use tokio::task::JoinHandle;
|
||||
|
|
@ -106,7 +105,7 @@ impl DirectoryService for GRPCDirectoryService {
|
|||
fn get_recursive(
|
||||
&self,
|
||||
root_directory_digest: &B3Digest,
|
||||
) -> Pin<Box<dyn Stream<Item = Result<proto::Directory, Error>> + Send>> {
|
||||
) -> BoxStream<Result<proto::Directory, Error>> {
|
||||
let mut grpc_client = self.grpc_client.clone();
|
||||
let root_directory_digest = root_directory_digest.clone();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
use crate::{proto, B3Digest, Error};
|
||||
use futures::Stream;
|
||||
use futures::stream::BoxStream;
|
||||
use std::collections::HashMap;
|
||||
use std::pin::Pin;
|
||||
use std::sync::{Arc, RwLock};
|
||||
use tonic::async_trait;
|
||||
use tracing::{instrument, warn};
|
||||
|
|
@ -73,7 +72,7 @@ impl DirectoryService for MemoryDirectoryService {
|
|||
fn get_recursive(
|
||||
&self,
|
||||
root_directory_digest: &B3Digest,
|
||||
) -> Pin<Box<dyn Stream<Item = Result<proto::Directory, Error>> + Send>> {
|
||||
) -> BoxStream<Result<proto::Directory, Error>> {
|
||||
traverse_directory(self.clone(), root_directory_digest)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
use crate::{proto, B3Digest, Error};
|
||||
use futures::Stream;
|
||||
use std::pin::Pin;
|
||||
use futures::stream::BoxStream;
|
||||
use tonic::async_trait;
|
||||
|
||||
mod from_addr;
|
||||
|
|
@ -44,7 +43,7 @@ pub trait DirectoryService: Send + Sync {
|
|||
fn get_recursive(
|
||||
&self,
|
||||
root_directory_digest: &B3Digest,
|
||||
) -> Pin<Box<dyn Stream<Item = Result<proto::Directory, Error>> + Send>>;
|
||||
) -> BoxStream<Result<proto::Directory, Error>>;
|
||||
|
||||
/// Allows persisting a closure of [proto::Directory], which is a graph of
|
||||
/// connected Directory messages.
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
use crate::directoryservice::DirectoryPutter;
|
||||
use crate::proto::Directory;
|
||||
use crate::{proto, B3Digest, Error};
|
||||
use futures::Stream;
|
||||
use futures::stream::BoxStream;
|
||||
use prost::Message;
|
||||
use std::path::Path;
|
||||
use std::pin::Pin;
|
||||
use tonic::async_trait;
|
||||
use tracing::{instrument, warn};
|
||||
|
||||
|
|
@ -99,7 +98,7 @@ impl DirectoryService for SledDirectoryService {
|
|||
fn get_recursive(
|
||||
&self,
|
||||
root_directory_digest: &B3Digest,
|
||||
) -> Pin<Box<(dyn Stream<Item = Result<proto::Directory, Error>> + Send + 'static)>> {
|
||||
) -> BoxStream<Result<proto::Directory, Error>> {
|
||||
traverse_directory(self.clone(), root_directory_digest)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,19 +4,18 @@ use crate::proto;
|
|||
use crate::B3Digest;
|
||||
use crate::Error;
|
||||
use async_stream::stream;
|
||||
use futures::Stream;
|
||||
use futures::stream::BoxStream;
|
||||
use std::collections::{HashSet, VecDeque};
|
||||
use std::pin::Pin;
|
||||
use tonic::async_trait;
|
||||
use tracing::warn;
|
||||
|
||||
/// Traverses a [proto::Directory] from the root to the children.
|
||||
///
|
||||
/// This is mostly BFS, but directories are only returned once.
|
||||
pub fn traverse_directory<DS: DirectoryService + 'static>(
|
||||
pub fn traverse_directory<'a, DS: DirectoryService + 'static>(
|
||||
directory_service: DS,
|
||||
root_directory_digest: &B3Digest,
|
||||
) -> Pin<Box<dyn Stream<Item = Result<proto::Directory, Error>> + Send>> {
|
||||
) -> BoxStream<'a, Result<proto::Directory, Error>> {
|
||||
// The list of all directories that still need to be traversed. The next
|
||||
// element is picked from the front, new elements are enqueued at the
|
||||
// back.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue