use crate::error::ErrorStats;
use std::collections::HashMap;
use std::path::PathBuf;
use std::time::{Duration, Instant};
pub(super) const DEBOUNCE_WINDOW: Duration = Duration::from_millis(500);
pub(super) const STATUS_REFRESH_INTERVAL: Duration = Duration::from_millis(200);
#[derive(Debug)]
pub struct WatchLoopState {
pub(super) last_trigger_at: Option<Instant>,
pub(super) last_status_refresh: Instant,
pub(super) debounce_map: HashMap<PathBuf, Instant>,
pub(super) total_stats: ErrorStats,
pub(super) trigger_count: u64,
pub(super) file_offsets: HashMap<PathBuf, u64>,
pub(super) sqlite_db_url: Option<String>,
}
impl WatchLoopState {
#[must_use]
pub fn new(init_offsets: HashMap<PathBuf, u64>, sqlite_db_url: Option<String>) -> Self {
Self {
last_trigger_at: None,
last_status_refresh: Instant::now(),
debounce_map: HashMap::new(),
total_stats: ErrorStats::default(),
trigger_count: 0u64,
file_offsets: init_offsets,
sqlite_db_url,
}
}
#[must_use]
pub fn trigger_count(&self) -> u64 {
self.trigger_count
}
#[must_use]
pub fn total_stats(&self) -> &ErrorStats {
&self.total_stats
}
#[must_use]
#[allow(dead_code)]
pub fn file_offsets(&self) -> &HashMap<PathBuf, u64> {
&self.file_offsets
}
}