pub struct CircuitBreakerConfig {
pub failure_threshold: u32,
pub reset_timeout: Duration,
pub success_threshold: u32,
}Expand description
Circuit breaker configuration.
§Example
use ccxt_core::circuit_breaker::CircuitBreakerConfig;
use std::time::Duration;
let config = CircuitBreakerConfig {
failure_threshold: 5,
reset_timeout: Duration::from_secs(30),
success_threshold: 1,
};Fields§
§failure_threshold: u32Number of consecutive failures before opening the circuit.
When the failure count reaches this threshold, the circuit transitions from Closed to Open state.
Default: 5
reset_timeout: DurationTime to wait in Open state before transitioning to HalfOpen.
After this duration elapses, the circuit breaker will allow a test request to check if the service has recovered.
Default: 30 seconds
success_threshold: u32Number of consecutive successes needed to close the circuit from HalfOpen.
When in HalfOpen state, this many successful requests are required before transitioning back to Closed state.
Default: 1
Implementations§
Source§impl CircuitBreakerConfig
impl CircuitBreakerConfig
Sourcepub fn new(
failure_threshold: u32,
reset_timeout: Duration,
success_threshold: u32,
) -> CircuitBreakerConfig
pub fn new( failure_threshold: u32, reset_timeout: Duration, success_threshold: u32, ) -> CircuitBreakerConfig
Creates a new circuit breaker configuration with the given parameters.
§Arguments
failure_threshold- Number of failures before opening the circuitreset_timeout- Time to wait before testing recoverysuccess_threshold- Number of successes needed to close the circuit
Sourcepub fn validate(&self) -> Result<ValidationResult, ConfigValidationError>
pub fn validate(&self) -> Result<ValidationResult, ConfigValidationError>
Validates the circuit breaker configuration.
§Returns
Returns Ok(ValidationResult) if the configuration is valid.
Returns Err(ConfigValidationError) if the configuration is invalid.
§Validation Rules
failure_thresholdmust be > 0success_thresholdmust be > 0reset_timeoutmust be >= 1 second
§Example
use ccxt_core::circuit_breaker::CircuitBreakerConfig;
let config = CircuitBreakerConfig::default();
assert!(config.validate().is_ok());Trait Implementations§
Source§impl Clone for CircuitBreakerConfig
impl Clone for CircuitBreakerConfig
Source§fn clone(&self) -> CircuitBreakerConfig
fn clone(&self) -> CircuitBreakerConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more