use std::time::Duration;
#[derive(Clone, Debug)]
pub struct JournalConfig {
pub max_object_size_bytes: u64,
pub max_decompressed_bytes: usize,
pub max_field_name_len: usize,
pub max_fields_per_entry: usize,
pub max_journal_files: usize,
pub max_object_chain_steps: usize,
pub max_query_terms: usize,
pub allow_mmap_online: bool,
pub include_journal_tilde: bool,
pub poll_interval: Duration,
}
impl Default for JournalConfig {
fn default() -> Self {
Self {
max_object_size_bytes: 16 * 1024 * 1024,
max_decompressed_bytes: 1024 * 1024,
max_field_name_len: 128,
max_fields_per_entry: 256,
max_journal_files: 1024,
max_object_chain_steps: 1_000_000,
max_query_terms: 64,
allow_mmap_online: false,
include_journal_tilde: false,
poll_interval: Duration::from_millis(2000),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_config_values_are_stable() {
let cfg = JournalConfig::default();
assert_eq!(cfg.max_object_size_bytes, 16 * 1024 * 1024);
assert_eq!(cfg.max_decompressed_bytes, 1024 * 1024);
assert_eq!(cfg.max_field_name_len, 128);
assert_eq!(cfg.max_fields_per_entry, 256);
assert_eq!(cfg.max_journal_files, 1024);
assert_eq!(cfg.max_object_chain_steps, 1_000_000);
assert_eq!(cfg.max_query_terms, 64);
assert!(!cfg.allow_mmap_online);
assert!(!cfg.include_journal_tilde);
assert_eq!(cfg.poll_interval, Duration::from_millis(2000));
}
}