Skip to main content

vtcode_llm/providers/gemini/wire/client/
retry.rs

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