pub struct ByteStreamClient<T> { /* private fields */ }
Expand description
§Introduction
The Byte Stream API enables a client to read and write a stream of bytes to and from a resource. Resources have names, and these names are supplied in the API calls below to identify the resource that is being read from or written to.
All implementations of the Byte Stream API export the interface defined here:
-
Read()
: Reads the contents of a resource. -
Write()
: Writes the contents of a resource. The client can callWrite()
multiple times with the same resource and can check the status of the write by callingQueryWriteStatus()
.
§Service parameters and metadata
The ByteStream API provides no direct way to access/modify any metadata associated with the resource.
§Errors
The errors returned by the service are in the Google canonical error space.
Implementations§
source§impl<T> ByteStreamClient<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> ByteStreamClient<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,
) -> ByteStreamClient<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 read(
&mut self,
request: impl IntoRequest<ReadRequest>,
) -> Result<Response<Streaming<ReadResponse>>, Status>
pub async fn read( &mut self, request: impl IntoRequest<ReadRequest>, ) -> Result<Response<Streaming<ReadResponse>>, Status>
Read()
is used to retrieve the contents of a resource as a sequence
of bytes. The bytes are returned in a sequence of responses, and the
responses are delivered as the results of a server-side streaming RPC.
sourcepub async fn write(
&mut self,
request: impl IntoStreamingRequest<Message = WriteRequest>,
) -> Result<Response<WriteResponse>, Status>
pub async fn write( &mut self, request: impl IntoStreamingRequest<Message = WriteRequest>, ) -> Result<Response<WriteResponse>, Status>
Write()
is used to send the contents of a resource as a sequence of
bytes. The bytes are sent in a sequence of request protos of a client-side
streaming RPC.
A Write()
action is resumable. If there is an error or the connection is
broken during the Write()
, the client should check the status of the
Write()
by calling QueryWriteStatus()
and continue writing from the
returned committed_size
. This may be less than the amount of data the
client previously sent.
Calling Write()
on a resource name that was previously written and
finalized could cause an error, depending on whether the underlying service
allows over-writing of previously written resources.
When the client closes the request channel, the service will respond with
a WriteResponse
. The service will not view the resource as complete
until the client has sent a WriteRequest
with finish_write
set to
true
. Sending any requests on a stream after sending a request with
finish_write
set to true
will cause an error. The client should
check the WriteResponse
it receives to determine how much data the
service was able to commit and whether the service views the resource as
complete
or not.
sourcepub async fn query_write_status(
&mut self,
request: impl IntoRequest<QueryWriteStatusRequest>,
) -> Result<Response<QueryWriteStatusResponse>, Status>
pub async fn query_write_status( &mut self, request: impl IntoRequest<QueryWriteStatusRequest>, ) -> Result<Response<QueryWriteStatusResponse>, Status>
QueryWriteStatus()
is used to find the committed_size
for a resource
that is being written, which can then be used as the write_offset
for
the next Write()
call.
If the resource does not exist (i.e., the resource has been deleted, or the
first Write()
has not yet reached the service), this method returns the
error NOT_FOUND
.
The client may call QueryWriteStatus()
at any time to determine how
much data has been processed for this resource. This is useful if the
client is buffering data and needs to know which data can be safely
evicted. For any sequence of QueryWriteStatus()
calls for a given
resource name, the sequence of returned committed_size
values will be
non-decreasing.
Trait Implementations§
source§impl<T: Clone> Clone for ByteStreamClient<T>
impl<T: Clone> Clone for ByteStreamClient<T>
source§fn clone(&self) -> ByteStreamClient<T>
fn clone(&self) -> ByteStreamClient<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 ByteStreamClient<T>
impl<T> RefUnwindSafe for ByteStreamClient<T>where
T: RefUnwindSafe,
impl<T> Send for ByteStreamClient<T>where
T: Send,
impl<T> Sync for ByteStreamClient<T>where
T: Sync,
impl<T> Unpin for ByteStreamClient<T>where
T: Unpin,
impl<T> UnwindSafe for ByteStreamClient<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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§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