vtcode_core/gemini/client/
retry.rs

1use std::time::Duration;
2
3/// Retry configuration for streaming operations
4#[derive(Debug, Clone)]
5pub struct RetryConfig {
6    pub max_attempts: u32,
7    pub initial_delay: Duration,
8    pub max_delay: Duration,
9    pub backoff_multiplier: f64,
10    pub retryable_errors: Vec<String>,
11}
12
13impl Default for RetryConfig {
14    fn default() -> Self {
15        Self {
16            max_attempts: 3,
17            initial_delay: Duration::from_millis(500),
18            max_delay: Duration::from_secs(30),
19            backoff_multiplier: 2.0,
20            retryable_errors: vec![
21                "timeout".to_string(),
22                "connection".to_string(),
23                "rate_limit".to_string(),
24                "server_error".to_string(),
25                "network".to_string(),
26            ],
27        }
28    }
29}