use std::path::PathBuf;
use std::time::Duration;
#[derive(Debug, Clone)]
pub(crate) struct RuntimeConfig {
pub log_dir: Option<PathBuf>,
pub raw_output: RawOutputPolicy,
pub retention: RetentionPolicy,
pub max_concurrent: usize,
pub default_grace_period: Duration,
}
impl Default for RuntimeConfig {
fn default() -> Self {
RuntimeConfig {
log_dir: None,
raw_output: RawOutputPolicy::Disabled,
retention: RetentionPolicy::default(),
max_concurrent: std::thread::available_parallelism()
.map(|n| n.get())
.unwrap_or(4),
default_grace_period: Duration::from_secs(5),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum RawOutputPolicy {
Persist,
#[cfg(feature = "gzip")]
PersistGzipOnFinalize,
MemoryOnly,
Disabled,
}
#[derive(Debug, Clone)]
pub struct RetentionPolicy {
pub keep_events_for: Duration,
pub keep_raw_for: Duration,
pub pinned_tag: String,
}
impl Default for RetentionPolicy {
fn default() -> Self {
RetentionPolicy {
keep_events_for: Duration::from_secs(60 * 60 * 24 * 30),
keep_raw_for: Duration::from_secs(60 * 60 * 24 * 7),
pinned_tag: "pinned".into(),
}
}
}