use std::net::SocketAddr;
use std::time::Duration;
#[derive(Debug, Clone)]
pub struct BrokerConfig {
pub bind_addr: SocketAddr,
pub max_connections: usize,
pub channel_buffer_size: usize,
pub max_frame_size: usize,
pub max_subscriptions_per_connection: usize,
pub ping_interval: Duration,
pub ping_timeout: Duration,
pub shutdown_timeout: Duration,
}
impl Default for BrokerConfig {
fn default() -> Self {
Self {
bind_addr: ([127, 0, 0, 1], 4222).into(),
max_connections: 1024,
channel_buffer_size: 256,
max_frame_size: 64 * 1024,
max_subscriptions_per_connection: 1024,
ping_interval: Duration::from_secs(30),
ping_timeout: Duration::from_secs(5),
shutdown_timeout: Duration::from_secs(5),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_config() {
let cfg = BrokerConfig::default();
assert_eq!(cfg.bind_addr.port(), 4222);
assert_eq!(cfg.max_connections, 1024);
assert_eq!(cfg.channel_buffer_size, 256);
assert_eq!(cfg.max_frame_size, 65536);
assert_eq!(cfg.max_subscriptions_per_connection, 1024);
assert_eq!(cfg.ping_interval, Duration::from_secs(30));
assert_eq!(cfg.ping_timeout, Duration::from_secs(5));
assert_eq!(cfg.shutdown_timeout, Duration::from_secs(5));
}
}