ai_lib/circuit_breaker/
config.rs1use serde::{Deserialize, Serialize};
4use std::time::Duration;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct CircuitBreakerConfig {
9 pub failure_threshold: u32,
11 pub recovery_timeout: Duration,
13 pub success_threshold: u32,
15 pub request_timeout: Duration,
17}
18
19impl Default for CircuitBreakerConfig {
20 fn default() -> Self {
21 Self {
22 failure_threshold: 5,
23 recovery_timeout: Duration::from_secs(30),
24 success_threshold: 3,
25 request_timeout: Duration::from_secs(10),
26 }
27 }
28}
29
30impl CircuitBreakerConfig {
31 pub fn production() -> Self {
33 Self {
34 failure_threshold: 3,
35 recovery_timeout: Duration::from_secs(60),
36 success_threshold: 2,
37 request_timeout: Duration::from_secs(15),
38 }
39 }
40
41 pub fn development() -> Self {
43 Self {
44 failure_threshold: 10,
45 recovery_timeout: Duration::from_secs(15),
46 success_threshold: 5,
47 request_timeout: Duration::from_secs(5),
48 }
49 }
50
51 pub fn conservative() -> Self {
53 Self {
54 failure_threshold: 2,
55 recovery_timeout: Duration::from_secs(120),
56 success_threshold: 5,
57 request_timeout: Duration::from_secs(30),
58 }
59 }
60}