use std::path::PathBuf;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Bucket {
FifteenMin,
OneHour,
OneDay,
}
impl Bucket {
pub fn seconds(self) -> u64 {
match self {
Bucket::FifteenMin => 900,
Bucket::OneHour => 3600,
Bucket::OneDay => 86_400,
}
}
pub fn from_str_lossy(s: &str) -> Self {
match s {
"15m" => Bucket::FifteenMin,
"1d" => Bucket::OneDay,
_ => Bucket::OneHour,
}
}
}
#[derive(Debug, Clone)]
pub struct Config {
pub raw_truncate: Option<usize>,
pub bucket: Bucket,
#[allow(dead_code)]
pub ring_hours: u64,
pub export_jsonl: Option<PathBuf>,
pub export_sqlite: Option<PathBuf>,
pub no_media: bool,
pub bpf: Option<String>,
pub evlog: Option<PathBuf>,
pub dry_run: bool,
pub max_calls: usize,
pub max_streams: usize,
pub max_diagnostics: usize,
pub diag_level: String,
pub turn_servers: Vec<std::net::IpAddr>,
}
impl Default for Config {
fn default() -> Self {
Self {
raw_truncate: None,
bucket: Bucket::FifteenMin,
ring_hours: 24,
export_jsonl: None,
export_sqlite: None,
no_media: false,
bpf: None,
evlog: None,
dry_run: false,
max_calls: 100_000,
max_streams: 50_000,
max_diagnostics: 50_000,
diag_level: "warn".to_string(),
turn_servers: Vec::new(),
}
}
}