Struct ginepro::LoadBalancedChannel
source · pub struct LoadBalancedChannel(/* private fields */);
Expand description
Implements tonic GrpcService
for a client-side load balanced Channel
(using The Power of Two Choices
).
#[tokio::main]
async fn main() {
use ginepro::LoadBalancedChannel;
use shared_proto::pb::tester_client::TesterClient;
use std::convert::TryInto;
let load_balanced_channel = LoadBalancedChannel::builder(("my.hostname", 5000))
.channel()
.await
.expect("failed to construct LoadBalancedChannel");
let client = TesterClient::new(load_balanced_channel);
}
Implementations§
source§impl LoadBalancedChannel
impl LoadBalancedChannel
sourcepub fn builder<S>(
service_definition: S
) -> LoadBalancedChannelBuilder<DnsResolver, S>
pub fn builder<S>( service_definition: S ) -> LoadBalancedChannelBuilder<DnsResolver, S>
Start configuring a LoadBalancedChannel
by passing in the ServiceDefinition
for the gRPC server service you want to call - e.g. my.service.uri
and 5000
.
All the service endpoints of a ServiceDefinition
will be
constructed by resolving IPs for ServiceDefinition::hostname
, and
using the port number ServiceDefinition::port
.
Trait Implementations§
source§impl Clone for LoadBalancedChannel
impl Clone for LoadBalancedChannel
source§fn clone(&self) -> LoadBalancedChannel
fn clone(&self) -> LoadBalancedChannel
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for LoadBalancedChannel
impl Debug for LoadBalancedChannel
source§impl From<LoadBalancedChannel> for Channel
impl From<LoadBalancedChannel> for Channel
source§fn from(channel: LoadBalancedChannel) -> Self
fn from(channel: LoadBalancedChannel) -> Self
Converts to this type from the input type.
source§impl Service<Request<UnsyncBoxBody<Bytes, Status>>> for LoadBalancedChannel
impl Service<Request<UnsyncBoxBody<Bytes, Status>>> for LoadBalancedChannel
§type Response = Response<<Channel as GrpcService<UnsyncBoxBody<Bytes, Status>>>::ResponseBody>
type Response = Response<<Channel as GrpcService<UnsyncBoxBody<Bytes, Status>>>::ResponseBody>
Responses given by the service.
§type Error = <Channel as GrpcService<UnsyncBoxBody<Bytes, Status>>>::Error
type Error = <Channel as GrpcService<UnsyncBoxBody<Bytes, Status>>>::Error
Errors produced by the service.
§type Future = <Channel as GrpcService<UnsyncBoxBody<Bytes, Status>>>::Future
type Future = <Channel as GrpcService<UnsyncBoxBody<Bytes, Status>>>::Future
The future response value.
Auto Trait Implementations§
impl Freeze for LoadBalancedChannel
impl !RefUnwindSafe for LoadBalancedChannel
impl Send for LoadBalancedChannel
impl Sync for LoadBalancedChannel
impl Unpin for LoadBalancedChannel
impl !UnwindSafe for LoadBalancedChannel
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, ReqBody, ResBody> GrpcService<ReqBody> for T
impl<T, ReqBody, ResBody> GrpcService<ReqBody> for T
§type ResponseBody = ResBody
type ResponseBody = ResBody
Responses body given by the service.
source§fn poll_ready(
&mut self,
cx: &mut Context<'_>
) -> Poll<Result<(), <T as GrpcService<ReqBody>>::Error>>
fn poll_ready( &mut self, cx: &mut Context<'_> ) -> Poll<Result<(), <T as GrpcService<ReqBody>>::Error>>
Returns
Ready
when the service is able to process requests. Read moresource§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>
Wrap the input message
T
in a tonic::Request
source§impl<S, R> ServiceExt<R> for Swhere
S: Service<R>,
impl<S, R> ServiceExt<R> for Swhere
S: Service<R>,
source§fn into_make_service(self) -> IntoMakeService<S>
fn into_make_service(self) -> IntoMakeService<S>
Convert this service into a
MakeService
, that is a Service
whose
response is another service. Read moresource§impl<T, Request> ServiceExt<Request> for T
impl<T, Request> ServiceExt<Request> for T
source§fn ready(&mut self) -> Ready<'_, Self, Request>where
Self: Sized,
fn ready(&mut self) -> Ready<'_, Self, Request>where
Self: Sized,
Yields a mutable reference to the service when it is ready to accept a request.
source§fn ready_and(&mut self) -> Ready<'_, Self, Request>where
Self: Sized,
fn ready_and(&mut self) -> Ready<'_, Self, Request>where
Self: Sized,
👎Deprecated since 0.4.6: please use the
ServiceExt::ready
method insteadYields a mutable reference to the service when it is ready to accept a request.
source§fn ready_oneshot(self) -> ReadyOneshot<Self, Request>where
Self: Sized,
fn ready_oneshot(self) -> ReadyOneshot<Self, Request>where
Self: Sized,
Yields the service when it is ready to accept a request.
source§fn oneshot(self, req: Request) -> Oneshot<Self, Request>where
Self: Sized,
fn oneshot(self, req: Request) -> Oneshot<Self, Request>where
Self: Sized,
Consume this
Service
, calling with the providing request once it is ready.source§fn and_then<F>(self, f: F) -> AndThen<Self, F>
fn and_then<F>(self, f: F) -> AndThen<Self, F>
Executes a new future after this service’s future resolves. This does
not alter the behaviour of the
poll_ready
method. Read moresource§fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F>
fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F>
Maps this service’s response value to a different value. This does not
alter the behaviour of the
poll_ready
method. Read moresource§fn map_err<F, Error>(self, f: F) -> MapErr<Self, F>
fn map_err<F, Error>(self, f: F) -> MapErr<Self, F>
Maps this service’s error value to a different value. This does not
alter the behaviour of the
poll_ready
method. Read moresource§fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F>
fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F>
Maps this service’s result type (
Result<Self::Response, Self::Error>
)
to a different value, regardless of whether the future succeeds or
fails. Read moresource§fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F>
fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F>
Composes a function in front of the service. Read more
source§fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F>
fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F>
Composes an asynchronous function after this service. Read more
source§fn map_future<F, Fut, Response, Error>(self, f: F) -> MapFuture<Self, F>
fn map_future<F, Fut, Response, Error>(self, f: F) -> MapFuture<Self, F>
Composes a function that transforms futures produced by the service. Read more