vtcode_llm/providers/gemini/wire/client/
retry.rs1use std::time::Duration;
2
3#[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}