Struct tvix_castore::proto::GRPCBlobServiceWrapper
source · pub struct GRPCBlobServiceWrapper<T> {
blob_service: T,
}
Fields§
§blob_service: T
Implementations§
source§impl<T> GRPCBlobServiceWrapper<T>
impl<T> GRPCBlobServiceWrapper<T>
Trait Implementations§
source§impl<T> BlobService for GRPCBlobServiceWrapper<T>
impl<T> BlobService for GRPCBlobServiceWrapper<T>
§type ReadStream = Pin<Box<dyn Stream<Item = Result<BlobChunk, Status>> + Send>>
type ReadStream = Pin<Box<dyn Stream<Item = Result<BlobChunk, Status>> + Send>>
Server streaming response type for the Read method.
source§fn stat<'life0, 'async_trait>(
&'life0 self,
request: Request<StatBlobRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<StatBlobResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn stat<'life0, 'async_trait>(
&'life0 self,
request: Request<StatBlobRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<StatBlobResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Stat can be used to check for the existence of a blob, as well as
gathering more data about it, like more granular chunking information
or baos.
Server implementations are not required to provide more granular chunking
information, especially if the digest specified in
StatBlobRequest
is
already a chunk of a blob.source§fn read<'life0, 'async_trait>(
&'life0 self,
request: Request<ReadBlobRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<Self::ReadStream>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn read<'life0, 'async_trait>(
&'life0 self,
request: Request<ReadBlobRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<Self::ReadStream>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Read allows reading (all) data of a blob/chunk by the BLAKE3 digest of
its contents.
If the backend communicated more granular chunks in the
Stat
request,
this can also be used to read chunks.
This request returns a stream of BlobChunk, which is just a container for
a stream of bytes.
The server may decide on whatever chunking it may seem fit as a size for
the individual BlobChunk sent in the response stream, this is mostly to
keep individual messages at a manageable size.Auto Trait Implementations§
impl<T> Freeze for GRPCBlobServiceWrapper<T>where
T: Freeze,
impl<T> RefUnwindSafe for GRPCBlobServiceWrapper<T>where
T: RefUnwindSafe,
impl<T> Send for GRPCBlobServiceWrapper<T>where
T: Send,
impl<T> Sync for GRPCBlobServiceWrapper<T>where
T: Sync,
impl<T> Unpin for GRPCBlobServiceWrapper<T>where
T: Unpin,
impl<T> UnwindSafe for GRPCBlobServiceWrapper<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> FutureExt for T
impl<T> FutureExt for T
source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
source§impl<T> FutureExt for T
impl<T> FutureExt for T
source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request