vtcode_core/gemini/client/
config.rs

1use std::time::Duration;
2
3/// Configuration for HTTP client optimization
4#[derive(Clone)]
5pub struct ClientConfig {
6    /// Maximum number of idle connections per host
7    pub pool_max_idle_per_host: usize,
8    /// How long to keep idle connections alive
9    pub pool_idle_timeout: Duration,
10    /// TCP keepalive duration
11    pub tcp_keepalive: Duration,
12    /// Request timeout
13    pub request_timeout: Duration,
14    /// Connection timeout
15    pub connect_timeout: Duration,
16    /// User agent string
17    pub user_agent: String,
18}
19
20impl Default for ClientConfig {
21    fn default() -> Self {
22        Self {
23            pool_max_idle_per_host: 10,
24            pool_idle_timeout: Duration::from_secs(90),
25            tcp_keepalive: Duration::from_secs(60),
26            request_timeout: Duration::from_secs(60),
27            connect_timeout: Duration::from_secs(10),
28            user_agent: "vtcode/1.0.0".to_string(),
29        }
30    }
31}
32
33impl ClientConfig {
34    /// Configuration optimized for high-throughput scenarios
35    pub fn high_throughput() -> Self {
36        Self {
37            pool_max_idle_per_host: 20,
38            pool_idle_timeout: Duration::from_secs(120),
39            tcp_keepalive: Duration::from_secs(60),
40            request_timeout: Duration::from_secs(120),
41            connect_timeout: Duration::from_secs(15),
42            user_agent: "vtcode/1.0.0-high-throughput".to_string(),
43        }
44    }
45
46    /// Configuration optimized for low memory usage (< 100MB target)
47    pub fn low_memory() -> Self {
48        Self {
49            pool_max_idle_per_host: 3,
50            pool_idle_timeout: Duration::from_secs(30),
51            tcp_keepalive: Duration::from_secs(30),
52            request_timeout: Duration::from_secs(60),
53            connect_timeout: Duration::from_secs(5),
54            user_agent: "vtcode/1.0.0-low-memory".to_string(),
55        }
56    }
57
58    /// Configuration optimized for ultra-low memory (< 50MB target)
59    pub fn ultra_low_memory() -> Self {
60        Self {
61            pool_max_idle_per_host: 1,
62            pool_idle_timeout: Duration::from_secs(10),
63            tcp_keepalive: Duration::from_secs(15),
64            request_timeout: Duration::from_secs(30),
65            connect_timeout: Duration::from_secs(3),
66            user_agent: "vtcode/1.0.0-ultra-low-memory".to_string(),
67        }
68    }
69
70    /// Configuration optimized for low-latency scenarios
71    pub fn low_latency() -> Self {
72        Self {
73            pool_max_idle_per_host: 5,
74            pool_idle_timeout: Duration::from_secs(30),
75            tcp_keepalive: Duration::from_secs(30),
76            request_timeout: Duration::from_secs(30),
77            connect_timeout: Duration::from_secs(5),
78            user_agent: "vtcode/1.0.0-low-latency".to_string(),
79        }
80    }
81}