Struct CircuitBreaker
pub struct CircuitBreaker {
config: CircuitBreakerConfig,
state: RwLock<RawRwLock, CircuitState>,
failure_count: AtomicU32,
success_count: AtomicU32,
opened_at: RwLock<RawRwLock, Option<Instant>>,
half_open_requests: AtomicU32,
total_requests: AtomicU64,
total_failures: AtomicU64,
total_rejections: AtomicU64,
}Expand description
Circuit breaker for fault isolation.
Fields§
§config: CircuitBreakerConfig§state: RwLock<RawRwLock, CircuitState>§failure_count: AtomicU32§success_count: AtomicU32§opened_at: RwLock<RawRwLock, Option<Instant>>§half_open_requests: AtomicU32§total_requests: AtomicU64§total_failures: AtomicU64§total_rejections: AtomicU64Implementations§
§impl CircuitBreaker
impl CircuitBreaker
pub fn new() -> Arc<CircuitBreaker>
pub fn new() -> Arc<CircuitBreaker>
Create a new circuit breaker with default config.
pub fn with_config(config: CircuitBreakerConfig) -> Arc<CircuitBreaker>
pub fn with_config(config: CircuitBreakerConfig) -> Arc<CircuitBreaker>
Create with custom config.
pub fn state(&self) -> CircuitState
pub fn state(&self) -> CircuitState
Get current state.
pub fn is_allowed(&self) -> bool
pub fn is_allowed(&self) -> bool
Check if circuit allows requests.
pub fn record_success(&self)
pub fn record_success(&self)
Record a successful operation.
pub fn record_failure(&self)
pub fn record_failure(&self)
Record a failed operation.
pub fn record_rejection(&self)
pub fn record_rejection(&self)
Record a rejection (request not attempted due to open circuit).
pub fn reset(&self)
pub fn reset(&self)
Force reset the circuit to closed state.
pub async fn execute<F, Fut, T, E>(
&self,
operation: F,
) -> Result<T, RingKernelError>
pub async fn execute<F, Fut, T, E>( &self, operation: F, ) -> Result<T, RingKernelError>
Execute an operation with circuit breaker protection.
pub fn stats(&self) -> CircuitBreakerStats
pub fn stats(&self) -> CircuitBreakerStats
Get circuit breaker statistics.
Trait Implementations§
§impl Default for CircuitBreaker
impl Default for CircuitBreaker
§fn default() -> CircuitBreaker
fn default() -> CircuitBreaker
Returns the “default value” for a type. Read more
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>
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§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.