use std::time::Duration;
use crate::topic::ordering::OrderingPolicy;
use crate::topic::retention::RetentionPolicy;
#[derive(Debug, Clone)]
pub struct TopicProfile {
pub name: String,
pub retention: RetentionPolicy,
pub ordering: OrderingPolicy,
pub max_subscribers: usize,
pub max_publishers: usize,
pub rate_limit_per_publisher: Option<u32>,
pub rate_limit_total: Option<u32>,
pub replay_enabled: bool,
pub snapshot_enabled: bool,
pub replay_window: Duration,
}
impl Default for TopicProfile {
fn default() -> Self {
Self {
name: "default".into(),
retention: RetentionPolicy::Latest,
ordering: OrderingPolicy::Topic,
max_subscribers: 10_000,
max_publishers: 10_000,
rate_limit_per_publisher: None,
rate_limit_total: None,
replay_enabled: true,
snapshot_enabled: true,
replay_window: Duration::from_secs(300),
}
}
}