use std::time::Duration;
#[derive(Debug, Clone, Copy)]
pub struct WsHeartbeatConfig {
pub interval: Duration,
pub timeout: Duration,
}
impl Default for WsHeartbeatConfig {
fn default() -> Self {
Self {
interval: Duration::from_secs(30),
timeout: Duration::from_secs(10),
}
}
}
impl WsHeartbeatConfig {
pub fn new() -> Self {
Self::default()
}
pub fn interval(mut self, interval: Duration) -> Self {
self.interval = interval;
self
}
pub fn timeout(mut self, timeout: Duration) -> Self {
self.timeout = timeout;
self
}
}
#[cfg(test)]
mod tests {
use super::*;
use proptest::prelude::*;
proptest! {
#[test]
fn test_heartbeat_config_roundtrip(
interval_secs in 1u64..3600,
timeout_secs in 1u64..3600,
) {
let config = WsHeartbeatConfig::new()
.interval(Duration::from_secs(interval_secs))
.timeout(Duration::from_secs(timeout_secs));
prop_assert_eq!(config.interval, Duration::from_secs(interval_secs));
prop_assert_eq!(config.timeout, Duration::from_secs(timeout_secs));
}
}
}