modbus_relay/config/
backoff.rs

1use std::time::Duration;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6#[serde(deny_unknown_fields)]
7pub struct Config {
8    /// Initial wait time
9    #[serde(with = "humantime_serde")]
10    pub initial_interval: Duration,
11    /// Maximum wait time
12    #[serde(with = "humantime_serde")]
13    pub max_interval: Duration,
14    /// Multiplier for each subsequent attempt
15    pub multiplier: f64,
16    /// Maximum number of attempts
17    pub max_retries: u64,
18}
19
20impl Default for Config {
21    fn default() -> Self {
22        Self {
23            initial_interval: Duration::from_millis(100),
24            max_interval: Duration::from_secs(30),
25            multiplier: 2.0,
26            max_retries: 5,
27        }
28    }
29}