Struct tvix_castore::proto::blob_service_client::BlobServiceClient
source · pub struct BlobServiceClient<T> {
inner: Grpc<T>,
}
Expand description
BlobService allows reading (or uploading) content-addressed blobs of data. BLAKE3 is used as a hashing function for the data. Uploading a blob will return the BLAKE3 digest of it, and that’s the identifier used to Read/Stat them too.
Fields§
§inner: Grpc<T>
Implementations§
source§impl<T> BlobServiceClient<T>where
T: GrpcService<BoxBody>,
T::Error: Into<StdError>,
T::ResponseBody: Body<Data = Bytes> + Send + 'static,
<T::ResponseBody as Body>::Error: Into<StdError> + Send,
impl<T> BlobServiceClient<T>where
T: GrpcService<BoxBody>,
T::Error: Into<StdError>,
T::ResponseBody: Body<Data = Bytes> + Send + 'static,
<T::ResponseBody as Body>::Error: Into<StdError> + Send,
pub fn new(inner: T) -> Self
pub fn with_origin(inner: T, origin: Uri) -> Self
pub fn with_interceptor<F>(
inner: T,
interceptor: F,
) -> BlobServiceClient<InterceptedService<T, F>>where
F: Interceptor,
T::ResponseBody: Default,
T: Service<Request<BoxBody>, Response = Response<<T as GrpcService<BoxBody>>::ResponseBody>>,
<T as Service<Request<BoxBody>>>::Error: Into<StdError> + Send + Sync,
sourcepub fn send_compressed(self, encoding: CompressionEncoding) -> Self
pub fn send_compressed(self, encoding: CompressionEncoding) -> Self
Compress requests with the given encoding.
This requires the server to support it otherwise it might respond with an error.
sourcepub fn accept_compressed(self, encoding: CompressionEncoding) -> Self
pub fn accept_compressed(self, encoding: CompressionEncoding) -> Self
Enable decompressing responses.
sourcepub fn max_decoding_message_size(self, limit: usize) -> Self
pub fn max_decoding_message_size(self, limit: usize) -> Self
Limits the maximum size of a decoded message.
Default: 4MB
sourcepub fn max_encoding_message_size(self, limit: usize) -> Self
pub fn max_encoding_message_size(self, limit: usize) -> Self
Limits the maximum size of an encoded message.
Default: usize::MAX
sourcepub async fn stat(
&mut self,
request: impl IntoRequest<StatBlobRequest>,
) -> Result<Response<StatBlobResponse>, Status>
pub async fn stat( &mut self, request: impl IntoRequest<StatBlobRequest>, ) -> Result<Response<StatBlobResponse>, Status>
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.
sourcepub async fn read(
&mut self,
request: impl IntoRequest<ReadBlobRequest>,
) -> Result<Response<Streaming<BlobChunk>>, Status>
pub async fn read( &mut self, request: impl IntoRequest<ReadBlobRequest>, ) -> Result<Response<Streaming<BlobChunk>>, Status>
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.
sourcepub async fn put(
&mut self,
request: impl IntoStreamingRequest<Message = BlobChunk>,
) -> Result<Response<PutBlobResponse>, Status>
pub async fn put( &mut self, request: impl IntoStreamingRequest<Message = BlobChunk>, ) -> Result<Response<PutBlobResponse>, Status>
Put uploads a Blob, by reading a stream of bytes.
The way the data is chunked up in individual BlobChunk messages sent in the stream has no effect on how the server ends up chunking blobs up, if it does at all.
Trait Implementations§
source§impl<T: Clone> Clone for BlobServiceClient<T>
impl<T: Clone> Clone for BlobServiceClient<T>
source§fn clone(&self) -> BlobServiceClient<T>
fn clone(&self) -> BlobServiceClient<T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl<T> !Freeze for BlobServiceClient<T>
impl<T> RefUnwindSafe for BlobServiceClient<T>where
T: RefUnwindSafe,
impl<T> Send for BlobServiceClient<T>where
T: Send,
impl<T> Sync for BlobServiceClient<T>where
T: Sync,
impl<T> Unpin for BlobServiceClient<T>where
T: Unpin,
impl<T> UnwindSafe for BlobServiceClient<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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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>
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>
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>
T
in a tonic::Request