pub struct Breaker { /* private fields */ }Expand description
Per-upstream circuit breaker state (see the module docs). Share via
Arc from the upstream handle; the lock is taken once per attempt
(report) and once per request admission (check).
Implementations§
Source§impl Breaker
impl Breaker
Sourcepub fn with_clock(now_ms: fn() -> u64) -> Self
pub fn with_clock(now_ms: fn() -> u64) -> Self
New closed breaker with a caller-supplied millisecond clock (Unix epoch). Intended for tests; production keeps the system clock.
Sourcepub fn with_clock_and_events(
now_ms: fn() -> u64,
events: Option<UpstreamEmitter>,
) -> Self
pub fn with_clock_and_events( now_ms: fn() -> u64, events: Option<UpstreamEmitter>, ) -> Self
with_clock with transition events (DW-044): the upstream
handle’s wiring (the emitter is pre-bound to the upstream’s
label; None keeps event emission off).
Sourcepub fn check(&self, params: &BreakerParams) -> BreakerDecision
pub fn check(&self, params: &BreakerParams) -> BreakerDecision
Whether this request may be dispatched to the upstream. Transitions Open -> HalfOpen when the cooling-off has elapsed (the caller’s request becomes a trial probe) and consumes one probe slot.
Sourcepub fn report(&self, params: &BreakerParams, failed: bool)
pub fn report(&self, params: &BreakerParams, failed: bool)
Report one attempt outcome (observed at response-header
resolution; failed = transport error or status >= 500). Drives
every state transition; see the module docs.
Sourcepub fn state(&self) -> BreakerState
pub fn state(&self) -> BreakerState
Current state (observability/tests).
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Breaker
impl RefUnwindSafe for Breaker
impl Send for Breaker
impl Sync for Breaker
impl Unpin for Breaker
impl UnwindSafe for Breaker
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§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<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§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