pub struct CircuitBreaker { /* private fields */ }Expand description
Circuit breaker for fault tolerance
The circuit breaker monitors failures and automatically transitions between states:
- Closed: Normal operation, requests pass through
- Open: Too many failures, requests are blocked
- HalfOpen: Testing recovery, limited requests allowed
§Examples
use chie_shared::CircuitBreaker;
let mut breaker = CircuitBreaker::new(5, 60_000, 30_000);
// Record successful requests
breaker.record_success();
assert!(breaker.is_closed());
// Record failures
for _ in 0..5 {
breaker.record_failure();
}
assert!(breaker.is_open());Implementations§
Source§impl CircuitBreaker
impl CircuitBreaker
Sourcepub fn new(
failure_threshold: u32,
timeout_ms: u64,
half_open_timeout_ms: u64,
) -> Self
pub fn new( failure_threshold: u32, timeout_ms: u64, half_open_timeout_ms: u64, ) -> Self
Create a new circuit breaker
§Arguments
failure_threshold- Number of failures before opening circuittimeout_ms- Milliseconds to keep circuit openhalf_open_timeout_ms- Milliseconds for half-open state
Sourcepub fn with_defaults() -> Self
pub fn with_defaults() -> Self
Create a circuit breaker with default settings
Defaults: 5 failures, 60s timeout, 30s half-open timeout
Sourcepub fn state(&self) -> CircuitState
pub fn state(&self) -> CircuitState
Get the current state
Sourcepub fn is_half_open(&self) -> bool
pub fn is_half_open(&self) -> bool
Check if circuit is half-open (testing recovery)
Sourcepub fn allow_request(&self) -> bool
pub fn allow_request(&self) -> bool
Check if a request is allowed through the circuit
Sourcepub fn record_success(&mut self)
pub fn record_success(&mut self)
Record a successful request
Sourcepub fn record_failure(&mut self)
pub fn record_failure(&mut self)
Record a failed request
Sourcepub fn failure_count(&self) -> u32
pub fn failure_count(&self) -> u32
Get failure count
Sourcepub fn time_until_half_open(&self) -> Option<Duration>
pub fn time_until_half_open(&self) -> Option<Duration>
Get time remaining until circuit can transition from open to half-open
Sourcepub fn force_open(&mut self)
pub fn force_open(&mut self)
Force circuit to open state
Trait Implementations§
Source§impl Clone for CircuitBreaker
impl Clone for CircuitBreaker
Source§fn clone(&self) -> CircuitBreaker
fn clone(&self) -> CircuitBreaker
Returns a duplicate 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 Debug for CircuitBreaker
impl Debug for CircuitBreaker
Auto Trait Implementations§
impl Freeze for CircuitBreaker
impl RefUnwindSafe for CircuitBreaker
impl Send for CircuitBreaker
impl Sync for CircuitBreaker
impl Unpin for CircuitBreaker
impl UnwindSafe for CircuitBreaker
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