#[non_exhaustive]
pub struct ConnectionPoisoningInterceptor {}
Available on crate feature client only.
Expand description

An interceptor for poisoning connections in response to certain events.

This interceptor, when paired with a compatible connection, allows the connection to be poisoned in reaction to certain events (like receiving a transient error.) This allows users to avoid sending requests to a server that isn’t responding. This can increase the load on a server, because more connections will be made overall.

In order for this interceptor to work, the configured connection must interact with the “connection retriever” stored in an HTTP request’s extensions map. For an example of this, see HyperConnector. When a connection is made available to the retriever, this interceptor will call a .poison method on it, signalling that the connection should be dropped. It is up to the connection implementer to handle this.

Implementations§

source§

impl ConnectionPoisoningInterceptor

source

pub fn new() -> Self

Create a new ConnectionPoisoningInterceptor.

Trait Implementations§

source§

impl Debug for ConnectionPoisoningInterceptor

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ConnectionPoisoningInterceptor

source§

fn default() -> ConnectionPoisoningInterceptor

Returns the “default value” for a type. Read more
source§

impl Intercept for ConnectionPoisoningInterceptor

source§

fn name(&self) -> &'static str

The name of this interceptor, used in error messages for debugging.
source§

fn modify_before_transmit( &self, context: &mut BeforeTransmitInterceptorContextMut<'_>, _runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), BoxError>

A hook called before the transport request message is sent to the service. This method has the ability to modify and return a new transport request message of the same type. Read more
source§

fn read_after_deserialization( &self, context: &AfterDeserializationInterceptorContextRef<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), BoxError>

A hook called after the transport response message is unmarshalled. Read more
source§

fn read_before_execution( &self, context: &BeforeSerializationInterceptorContextRef<'_>, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called at the start of an execution, before the SDK does anything else. Read more
source§

fn modify_before_serialization( &self, context: &mut BeforeSerializationInterceptorContextMut<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called before the input message is marshalled into a transport message. This method has the ability to modify and return a new request message of the same type. Read more
source§

fn read_before_serialization( &self, context: &BeforeSerializationInterceptorContextRef<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called before the input message is marshalled into a transport message. Read more
source§

fn read_after_serialization( &self, context: &BeforeTransmitInterceptorContextRef<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called after the input message is marshalled into a transport message. Read more
source§

fn modify_before_retry_loop( &self, context: &mut BeforeTransmitInterceptorContextMut<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called before the retry loop is entered. This method has the ability to modify and return a new transport request message of the same type, except when a failure occurs earlier in the request pipeline. Read more
source§

fn read_before_attempt( &self, context: &BeforeTransmitInterceptorContextRef<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called before each attempt at sending the transmission request message to the service. Read more
source§

fn modify_before_signing( &self, context: &mut BeforeTransmitInterceptorContextMut<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called before the transport request message is signed. This method has the ability to modify and return a new transport request message of the same type. Read more
source§

fn read_before_signing( &self, context: &BeforeTransmitInterceptorContextRef<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called before the transport request message is signed. Read more
source§

fn read_after_signing( &self, context: &BeforeTransmitInterceptorContextRef<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called after the transport request message is signed. Read more
source§

fn read_before_transmit( &self, context: &BeforeTransmitInterceptorContextRef<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called before the transport request message is sent to the service. Read more
source§

fn read_after_transmit( &self, context: &BeforeDeserializationInterceptorContextRef<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called after the transport request message is sent to the service and a transport response message is received. Read more
source§

fn modify_before_deserialization( &self, context: &mut BeforeDeserializationInterceptorContextMut<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called before the transport response message is unmarshalled. This method has the ability to modify and return a new transport response message of the same type. Read more
source§

fn read_before_deserialization( &self, context: &BeforeDeserializationInterceptorContextRef<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called before the transport response message is unmarshalled Read more
source§

fn modify_before_attempt_completion( &self, context: &mut FinalizerInterceptorContextMut<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called when an attempt is completed. This method has the ability to modify and return a new output message or error matching the currently-executing operation. Read more
source§

fn read_after_attempt( &self, context: &FinalizerInterceptorContextRef<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called when an attempt is completed. Read more
source§

fn modify_before_completion( &self, context: &mut FinalizerInterceptorContextMut<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called when an execution is completed. This method has the ability to modify and return a new output message or error matching the currently - executing operation. Read more
source§

fn read_after_execution( &self, context: &FinalizerInterceptorContextRef<'_>, runtime_components: &RuntimeComponents, cfg: &mut ConfigBag ) -> Result<(), Box<dyn Error + Sync + Send>>

A hook called when an execution is completed. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more