relay-knowledge 1.1.16

Graph-database-based knowledge graph project.
Documentation
use std::time::Duration;

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct WatcherConfig {
    pub enabled: bool,
    pub debounce: Duration,
    pub commit_reconcile_interval: Duration,
    pub max_watch_dirs: usize,
    pub hash_cache_capacity: usize,
}

impl Default for WatcherConfig {
    fn default() -> Self {
        Self {
            enabled: true,
            debounce: Duration::from_secs(3),
            commit_reconcile_interval: Duration::from_secs(5),
            max_watch_dirs: 1024,
            hash_cache_capacity: 4096,
        }
    }
}

impl WatcherConfig {
    pub const DEFAULT_DEBOUNCE_MS: u64 = 3000;
    pub const DEFAULT_COMMIT_RECONCILE_INTERVAL_MS: u64 = 5000;
    pub const DEFAULT_MAX_WATCH_DIRS: usize = 1024;
    pub const DEFAULT_HASH_CACHE_CAPACITY: usize = 4096;

    pub fn from_environment(overrides: &crate::env::WatcherEnvOverrides) -> Self {
        Self {
            enabled: overrides.enabled.unwrap_or(true),
            debounce: Duration::from_millis(
                overrides.debounce_ms.unwrap_or(Self::DEFAULT_DEBOUNCE_MS),
            ),
            commit_reconcile_interval: Duration::from_millis(
                overrides
                    .commit_reconcile_interval_ms
                    .unwrap_or(Self::DEFAULT_COMMIT_RECONCILE_INTERVAL_MS),
            ),
            max_watch_dirs: overrides
                .max_watch_dirs
                .unwrap_or(Self::DEFAULT_MAX_WATCH_DIRS),
            hash_cache_capacity: overrides
                .hash_cache_capacity
                .unwrap_or(Self::DEFAULT_HASH_CACHE_CAPACITY),
        }
    }
}

#[cfg(test)]
#[path = "mod_tests.rs"]
mod tests;