pub struct FallbackService<S> { /* private fields */ }
Expand description
The FallbackService
consumes multiple transports and is able to
query them in parallel, returning the first successful response.
The service ranks transports based on latency and stability metrics, and will attempt to always use the best available transports.
Implementations§
Trait Implementations§
Source§impl<S: Clone> Clone for FallbackService<S>
impl<S: Clone> Clone for FallbackService<S>
Source§fn clone(&self) -> FallbackService<S>
fn clone(&self) -> FallbackService<S>
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<S: Debug> Debug for FallbackService<S>
impl<S: Debug> Debug for FallbackService<S>
Source§impl<S> Service<RequestPacket> for FallbackService<S>where
S: Service<RequestPacket, Future = TransportFut<'static>, Error = TransportError> + Send + Sync + Clone + Debug + 'static,
impl<S> Service<RequestPacket> for FallbackService<S>where
S: Service<RequestPacket, Future = TransportFut<'static>, Error = TransportError> + Send + Sync + Clone + Debug + 'static,
Source§type Response = ResponsePacket
type Response = ResponsePacket
Responses given by the service.
Source§type Future = Pin<Box<dyn Future<Output = Result<ResponsePacket, RpcError<TransportErrorKind>>> + Send>>
type Future = Pin<Box<dyn Future<Output = Result<ResponsePacket, RpcError<TransportErrorKind>>> + Send>>
The future response value.
Auto Trait Implementations§
impl<S> Freeze for FallbackService<S>
impl<S> !RefUnwindSafe for FallbackService<S>
impl<S> Send for FallbackService<S>
impl<S> Sync for FallbackService<S>
impl<S> Unpin for FallbackService<S>
impl<S> !UnwindSafe for FallbackService<S>
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> 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> IntoBoxTransport for T
impl<T> IntoBoxTransport for T
Source§fn into_box_transport(self) -> BoxTransport
fn into_box_transport(self) -> BoxTransport
Boxes the transport.
Source§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_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 it with the provided 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
Source§impl<T> Transport for Twhere
T: Service<RequestPacket, Response = ResponsePacket, Error = RpcError<TransportErrorKind>, Future = Pin<Box<dyn Future<Output = Result<ResponsePacket, RpcError<TransportErrorKind>>> + Send>>> + Send + Sync + 'static,
impl<T> Transport for Twhere
T: Service<RequestPacket, Response = ResponsePacket, Error = RpcError<TransportErrorKind>, Future = Pin<Box<dyn Future<Output = Result<ResponsePacket, RpcError<TransportErrorKind>>> + Send>>> + Send + Sync + 'static,
Source§fn boxed(self) -> BoxTransportwhere
Self: IntoBoxTransport,
fn boxed(self) -> BoxTransportwhere
Self: IntoBoxTransport,
Convert this transport into a boxed trait object.
Source§fn as_boxed(&self) -> BoxTransportwhere
Self: IntoBoxTransport,
fn as_boxed(&self) -> BoxTransportwhere
Self: IntoBoxTransport,
Make a boxed trait object by cloning this transport.