pub struct CircuitBreaker {
config: CircuitBreakerConfig,
state: RwLock<CircuitState>,
failure_count: AtomicU32,
success_count: AtomicU32,
opened_at: RwLock<Option<Instant>>,
half_open_requests: AtomicU32,
total_requests: AtomicU64,
total_failures: AtomicU64,
total_rejections: AtomicU64,
}Expand description
Circuit breaker for fault isolation.
Fields§
§config: CircuitBreakerConfigConfiguration.
state: RwLock<CircuitState>Current state.
failure_count: AtomicU32Failure count in current window.
success_count: AtomicU32Success count in half-open state.
opened_at: RwLock<Option<Instant>>Time when circuit opened.
half_open_requests: AtomicU32Current requests in half-open state.
total_requests: AtomicU64Total requests.
total_failures: AtomicU64Total failures.
total_rejections: AtomicU64Total rejections (due to open circuit).
Implementations§
Source§impl CircuitBreaker
impl CircuitBreaker
Sourcepub fn with_config(config: CircuitBreakerConfig) -> Arc<Self>
pub fn with_config(config: CircuitBreakerConfig) -> Arc<Self>
Create with custom config.
Sourcepub fn state(&self) -> CircuitState
pub fn state(&self) -> CircuitState
Get current state.
Sourcepub fn is_allowed(&self) -> bool
pub fn is_allowed(&self) -> bool
Check if circuit allows requests.
Sourcepub fn record_success(&self)
pub fn record_success(&self)
Record a successful operation.
Sourcepub fn record_failure(&self)
pub fn record_failure(&self)
Record a failed operation.
Sourcepub fn record_rejection(&self)
pub fn record_rejection(&self)
Record a rejection (request not attempted due to open circuit).
Sourcefn acquire_half_open(&self) -> bool
fn acquire_half_open(&self) -> bool
Acquire permission to execute (for half-open state).
Sourcepub async fn execute<F, Fut, T, E>(&self, operation: F) -> Result<T>
pub async fn execute<F, Fut, T, E>(&self, operation: F) -> Result<T>
Execute an operation with circuit breaker protection.
Sourcepub fn stats(&self) -> CircuitBreakerStats
pub fn stats(&self) -> CircuitBreakerStats
Get circuit breaker statistics.
Trait Implementations§
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§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
§fn deserialize(
&self,
deserializer: &mut D,
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>
Deserializes using the given deserializer
§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>
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Gets the layout of the type.