use futures_util::future::BoxFuture;
use std::time::Duration;
use tokio::time::Interval;
use crate::{
Result,
watch::{Event, StorageMonitor},
};
use super::VdirStorage;
pub struct VdirMonitor {
timer: Interval,
}
impl VdirMonitor {
pub fn new(_: &VdirStorage, interval: Duration) -> Result<VdirMonitor> {
let mut timer = tokio::time::interval(interval);
timer.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Delay);
Ok(VdirMonitor { timer })
}
}
impl StorageMonitor for VdirMonitor {
fn next_event(&mut self) -> BoxFuture<'_, Event> {
Box::pin(async {
self.timer.tick().await;
Event::General
})
}
}