use std::time::Duration;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct TraversalConfig {
pub reflex_timeout: Duration,
pub classify_deadline: Duration,
pub punch_fire_lead: Duration,
pub punch_deadline: Duration,
pub port_mapping_renewal: Duration,
}
impl Default for TraversalConfig {
fn default() -> Self {
Self {
reflex_timeout: Duration::from_secs(3),
classify_deadline: Duration::from_secs(5),
punch_fire_lead: Duration::from_millis(500),
punch_deadline: Duration::from_secs(5),
port_mapping_renewal: Duration::from_secs(30 * 60),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn defaults_match_plan() {
let cfg = TraversalConfig::default();
assert_eq!(cfg.reflex_timeout, Duration::from_secs(3));
assert_eq!(cfg.classify_deadline, Duration::from_secs(5));
assert_eq!(cfg.punch_fire_lead, Duration::from_millis(500));
assert_eq!(cfg.punch_deadline, Duration::from_secs(5));
assert_eq!(cfg.port_mapping_renewal, Duration::from_secs(1800));
}
}