cadmus_core/task/
time_sync.rs1use std::sync::mpsc::Sender;
2
3use crate::task::{BackgroundTask, ShutdownSignal, TaskId};
4use crate::time_manager::TimeManager;
5use crate::view::Event;
6
7const NTP_HOST: &str = "time.cloudflare.com:123";
8
9pub struct TimeSyncTask {
10 time_manager: &'static TimeManager,
11 manual: bool,
12}
13
14impl TimeSyncTask {
15 pub fn new(time_manager: &'static TimeManager, manual: bool) -> Self {
16 TimeSyncTask {
17 time_manager,
18 manual,
19 }
20 }
21}
22
23impl BackgroundTask for TimeSyncTask {
24 fn id(&self) -> TaskId {
25 TaskId::TimeSync
26 }
27
28 fn run(&mut self, hub: &Sender<Event>, _shutdown: &ShutdownSignal) {
29 if let Err(e) = self.time_manager.sync(NTP_HOST, self.manual, hub) {
30 tracing::error!(error = %e, "time sync failed");
31 }
32 }
33}