vtcode_core/gemini/client/
config.rs1use std::time::Duration;
2
3#[derive(Clone)]
5pub struct ClientConfig {
6 pub pool_max_idle_per_host: usize,
8 pub pool_idle_timeout: Duration,
10 pub tcp_keepalive: Duration,
12 pub request_timeout: Duration,
14 pub connect_timeout: Duration,
16 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 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 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 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 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}