modbus_relay/config/
connection.rs1use std::time::Duration;
2
3use serde::{Deserialize, Serialize};
4
5use super::BackoffConfig;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
9#[serde(deny_unknown_fields)]
10pub struct Config {
11 pub max_connections: u64,
13 #[serde(with = "humantime_serde")]
15 pub idle_timeout: Duration,
16 #[serde(with = "humantime_serde")]
18 pub error_timeout: Duration,
19 #[serde(with = "humantime_serde")]
21 pub connect_timeout: Duration,
22 pub per_ip_limits: Option<u64>,
24 pub backoff: BackoffConfig,
26}
27
28impl Default for Config {
29 fn default() -> Self {
30 Self {
31 max_connections: 100,
32 idle_timeout: Duration::from_secs(60),
33 error_timeout: Duration::from_secs(300),
34 connect_timeout: Duration::from_secs(5),
35 per_ip_limits: Some(10),
36 backoff: BackoffConfig {
37 initial_interval: Duration::from_millis(100),
38 max_interval: Duration::from_secs(30),
39 multiplier: 2.0,
40 max_retries: 5,
41 },
42 }
43 }
44}