use std::time::Duration;
#[non_exhaustive]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum MmapPolicy {
Auto,
Never,
}
#[non_exhaustive]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum LiveQueueFullPolicy {
Block,
DropNewest,
Disconnect,
}
#[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_open_files: usize,
pub mmap_policy: MmapPolicy,
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,
pub live_channel_capacity: usize,
pub max_live_batch_entries: usize,
pub max_live_replay_entries: usize,
pub live_queue_full_policy: LiveQueueFullPolicy,
}
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_open_files: 64,
mmap_policy: MmapPolicy::Auto,
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),
live_channel_capacity: 64,
max_live_batch_entries: 64,
max_live_replay_entries: 4096,
live_queue_full_policy: LiveQueueFullPolicy::Block,
}
}
}
#[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_open_files, 64);
assert_eq!(cfg.mmap_policy, MmapPolicy::Auto);
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));
assert_eq!(cfg.live_channel_capacity, 64);
assert_eq!(cfg.max_live_batch_entries, 64);
assert_eq!(cfg.max_live_replay_entries, 4096);
assert_eq!(cfg.live_queue_full_policy, LiveQueueFullPolicy::Block);
}
}