pub struct Grpc<T> { /* private fields */ }
Expand description
A gRPC client dispatcher.
This will wrap some inner GrpcService
and will encode/decode
messages via the provided codec.
Each request method takes a Request
, a PathAndQuery
, and a
Codec
. The request contains the message to send via the
Codec::encoder
. The path determines the fully qualified path
that will be append to the outgoing uri. The path must follow
the conventions explained in the gRPC protocol definition under Path →
. An
example of this path could look like /greeter.Greeter/SayHello
.
Implementations§
source§impl<T> Grpc<T>
impl<T> Grpc<T>
sourcepub fn new(inner: T) -> Self
pub fn new(inner: T) -> Self
Creates a new gRPC client with the provided GrpcService
.
sourcepub fn with_origin(inner: T, origin: Uri) -> Self
pub fn with_origin(inner: T, origin: Uri) -> Self
Creates a new gRPC client with the provided GrpcService
and Uri
.
The provided Uri will use only the scheme and authority parts as the path_and_query portion will be set for each method.
sourcepub fn send_compressed(self, encoding: CompressionEncoding) -> Self
pub fn send_compressed(self, encoding: CompressionEncoding) -> Self
Compress requests with the provided encoding.
Requires the server to accept the specified encoding, otherwise it might return an error.
§Example
The most common way of using this is through a client generated by tonic-build:
use tonic::transport::Channel;
let channel = Channel::builder("127.0.0.1:3000".parse().unwrap())
.connect()
.await
.unwrap();
let client = TestClient::new(channel).send_compressed(CompressionEncoding::Gzip);
sourcepub fn accept_compressed(self, encoding: CompressionEncoding) -> Self
pub fn accept_compressed(self, encoding: CompressionEncoding) -> Self
Enable accepting compressed responses.
Requires the server to also support sending compressed responses.
§Example
The most common way of using this is through a client generated by tonic-build:
use tonic::transport::Channel;
let channel = Channel::builder("127.0.0.1:3000".parse().unwrap())
.connect()
.await
.unwrap();
let client = TestClient::new(channel).accept_compressed(CompressionEncoding::Gzip);
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.
§Example
The most common way of using this is through a client generated by tonic-build:
use tonic::transport::Channel;
let channel = Channel::builder("127.0.0.1:3000".parse().unwrap())
.connect()
.await
.unwrap();
// Set the limit to 2MB, Defaults to 4MB.
let limit = 2 * 1024 * 1024;
let client = TestClient::new(channel).max_decoding_message_size(limit);
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 ecoded message.
§Example
The most common way of using this is through a client generated by tonic-build:
use tonic::transport::Channel;
let channel = Channel::builder("127.0.0.1:3000".parse().unwrap())
.connect()
.await
.unwrap();
// Set the limit to 2MB, Defaults to 4MB.
let limit = 2 * 1024 * 1024;
let client = TestClient::new(channel).max_encoding_message_size(limit);
sourcepub async fn ready(&mut self) -> Result<(), T::Error>where
T: GrpcService<BoxBody>,
pub async fn ready(&mut self) -> Result<(), T::Error>where
T: GrpcService<BoxBody>,
Check if the inner GrpcService
is able to accept a new request.
This will call GrpcService::poll_ready
until it returns ready or
an error. If this returns ready the inner GrpcService
is ready to
accept one more request.
sourcepub async fn unary<M1, M2, C>(
&mut self,
request: Request<M1>,
path: PathAndQuery,
codec: C,
) -> Result<Response<M2>, Status>
pub async fn unary<M1, M2, C>( &mut self, request: Request<M1>, path: PathAndQuery, codec: C, ) -> Result<Response<M2>, Status>
Send a single unary gRPC request.
sourcepub async fn client_streaming<S, M1, M2, C>(
&mut self,
request: Request<S>,
path: PathAndQuery,
codec: C,
) -> Result<Response<M2>, Status>
pub async fn client_streaming<S, M1, M2, C>( &mut self, request: Request<S>, path: PathAndQuery, codec: C, ) -> Result<Response<M2>, Status>
Send a client side streaming gRPC request.
sourcepub async fn server_streaming<M1, M2, C>(
&mut self,
request: Request<M1>,
path: PathAndQuery,
codec: C,
) -> Result<Response<Streaming<M2>>, Status>
pub async fn server_streaming<M1, M2, C>( &mut self, request: Request<M1>, path: PathAndQuery, codec: C, ) -> Result<Response<Streaming<M2>>, Status>
Send a server side streaming gRPC request.
Trait Implementations§
Auto Trait Implementations§
impl<T> !Freeze for Grpc<T>
impl<T> RefUnwindSafe for Grpc<T>where
T: RefUnwindSafe,
impl<T> Send for Grpc<T>where
T: Send,
impl<T> Sync for Grpc<T>where
T: Sync,
impl<T> Unpin for Grpc<T>where
T: Unpin,
impl<T> UnwindSafe for Grpc<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§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> 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