Struct ProxyRouteFailureCacheConnector
pub struct ProxyRouteFailureCacheConnector<S> { /* private fields */ }net only.Expand description
Connector wrapper that applies a shared ProxyRouteFailureCache.
This service reads only a singular selected ProxyRoute. Place it inside
a connection pool so an existing pooled connection is considered before a
new connection is suppressed by the negative cache.
Transport Unavailable, Timeout, Rejected, Protocol, and Other
failures are cached.
A success or non-cacheable remote failure clears existing backoff state so
the next request can try the route again. Local failures provide no evidence
about the proxy and leave its backoff unchanged, as do failures marked with
ConnectionPolicyScope::Request. Direct and plural routes
are ignored.
Implementations§
§impl<S> ProxyRouteFailureCacheConnector<S>
impl<S> ProxyRouteFailureCacheConnector<S>
pub const fn new(
inner: S,
cache: ProxyRouteFailureCache,
) -> ProxyRouteFailureCacheConnector<S>
pub const fn new( inner: S, cache: ProxyRouteFailureCache, ) -> ProxyRouteFailureCacheConnector<S>
Wrap a connector with a shared proxy route failure cache.
pub const fn cache(&self) -> &ProxyRouteFailureCache
pub const fn cache(&self) -> &ProxyRouteFailureCache
Return the configured cache.
pub fn into_inner(self) -> S
pub fn into_inner(self) -> S
Consumes self, returning the underlying service.
Trait Implementations§
§impl<S> Clone for ProxyRouteFailureCacheConnector<S>where
S: Clone,
impl<S> Clone for ProxyRouteFailureCacheConnector<S>where
S: Clone,
§fn clone(&self) -> ProxyRouteFailureCacheConnector<S>
fn clone(&self) -> ProxyRouteFailureCacheConnector<S>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl<S> Debug for ProxyRouteFailureCacheConnector<S>where
S: Debug,
impl<S> Debug for ProxyRouteFailureCacheConnector<S>where
S: Debug,
§impl<S, Input> Service<Input> for ProxyRouteFailureCacheConnector<S>where
S: ConnectorService<Input>,
Input: AuthorityInputExt + ConnectorTransportProtocolInputExt + ProtocolInputExt + Send + 'static,
impl<S, Input> Service<Input> for ProxyRouteFailureCacheConnector<S>where
S: ConnectorService<Input>,
Input: AuthorityInputExt + ConnectorTransportProtocolInputExt + ProtocolInputExt + Send + 'static,
§type Output = EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>
type Output = EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>
§type Error = ConnectionError
type Error = ConnectionError
§async fn serve(
&self,
input: Input,
) -> Result<<ProxyRouteFailureCacheConnector<S> as Service<Input>>::Output, <ProxyRouteFailureCacheConnector<S> as Service<Input>>::Error>
async fn serve( &self, input: Input, ) -> Result<<ProxyRouteFailureCacheConnector<S> as Service<Input>>::Output, <ProxyRouteFailureCacheConnector<S> as Service<Input>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
Auto Trait Implementations§
impl<S> !RefUnwindSafe for ProxyRouteFailureCacheConnector<S>
impl<S> !UnwindSafe for ProxyRouteFailureCacheConnector<S>
impl<S> Freeze for ProxyRouteFailureCacheConnector<S>where
S: Freeze,
impl<S> Send for ProxyRouteFailureCacheConnector<S>where
S: Send,
impl<S> Sync for ProxyRouteFailureCacheConnector<S>where
S: Sync,
impl<S> Unpin for ProxyRouteFailureCacheConnector<S>where
S: Unpin,
impl<S> UnsafeUnpin for ProxyRouteFailureCacheConnector<S>where
S: UnsafeUnpin,
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<S, Input, Connection> ConnectorService<Input> for Swhere
S: Service<Input, Output = EstablishedClientConnection<Connection, Input>>,
<S as Service<Input>>::Error: Into<ConnectionError>,
Connection: Send + ExtensionsRef,
impl<S, Input, Connection> ConnectorService<Input> for Swhere
S: Service<Input, Output = EstablishedClientConnection<Connection, Input>>,
<S as Service<Input>>::Error: Into<ConnectionError>,
Connection: Send + ExtensionsRef,
§type Connection = Connection
type Connection = Connection
ConnectorService§fn connect(
&self,
input: Input,
) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>, ConnectionError>> + Send
fn connect( &self, input: Input, ) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>, ConnectionError>> + Send
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§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> 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 more§impl<S> IntoEndpointService<(S,)> for S
impl<S> IntoEndpointService<(S,)> for S
type Service = S
§fn into_endpoint_service(self) -> <S as IntoEndpointService<(S,)>>::Service
fn into_endpoint_service(self) -> <S as IntoEndpointService<(S,)>>::Service
rama_core::Service.§impl<S, State> IntoEndpointServiceWithState<(S,), State> for S
impl<S, State> IntoEndpointServiceWithState<(S,), State> for S
type Service = S
§fn into_endpoint_service_with_state(
self,
_state: State,
) -> <S as IntoEndpointServiceWithState<(S,), State>>::Service
fn into_endpoint_service_with_state( self, _state: State, ) -> <S as IntoEndpointServiceWithState<(S,), State>>::Service
rama_core::Service with state.§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more