pub enum CircuitState {
Closed {
failure_count: u32,
success_count: u32,
},
Open {
opened_at: u64,
retry_after_us: u64,
},
HalfOpen {
probe_count: u32,
success_count: u32,
},
}Expand description
Three-state circuit breaker state machine.
All timestamps are in microseconds; the caller is responsible for supplying
a monotonically increasing current_ts — the implementation never reads the
system clock.
Variants§
Closed
Normal operation. All requests pass through and every result is counted.
Fields
Open
Circuit tripped. All requests are immediately rejected until
opened_at + retry_after_us.
Fields
§
retry_after_us: u64Microseconds to wait before transitioning to CircuitState::HalfOpen.
HalfOpen
Recovery-probe phase. A limited number of probe requests are allowed through to test whether the upstream service has recovered.
Implementations§
Source§impl CircuitState
impl CircuitState
Sourcepub fn label(&self) -> &'static str
pub fn label(&self) -> &'static str
Returns a human-readable label used in CircuitMetrics.
Trait Implementations§
Source§impl Clone for CircuitState
impl Clone for CircuitState
Source§fn clone(&self) -> CircuitState
fn clone(&self) -> CircuitState
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · 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 CircuitState
impl Debug for CircuitState
Source§impl PartialEq for CircuitState
impl PartialEq for CircuitState
Source§fn eq(&self, other: &CircuitState) -> bool
fn eq(&self, other: &CircuitState) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for CircuitState
Auto Trait Implementations§
impl Freeze for CircuitState
impl RefUnwindSafe for CircuitState
impl Send for CircuitState
impl Sync for CircuitState
impl Unpin for CircuitState
impl UnsafeUnpin for CircuitState
impl UnwindSafe for CircuitState
Blanket Implementations§
impl<T> Allocation for T
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§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
Mutably borrows from an owned value. Read more
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,
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> 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>
Converts
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>
Converts
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