|
|
|
@ -3,7 +3,6 @@ use crate::error::unexpected::{self, Mappable}; |
|
|
|
|
use crate::{origin, task_stack, util}; |
|
|
|
|
|
|
|
|
|
use std::sync; |
|
|
|
|
use tokio_util::sync::CancellationToken; |
|
|
|
|
|
|
|
|
|
pub enum GetSettingsResult { |
|
|
|
|
Stored(domain::Settings), |
|
|
|
@ -183,13 +182,11 @@ impl ManagerImpl { |
|
|
|
|
config, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
task_stack.push_spawn(|canceller| { |
|
|
|
|
let manager = manager.clone(); |
|
|
|
|
async move { |
|
|
|
|
manager.sync_all_domains_job(canceller).await; |
|
|
|
|
Ok(()) |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
task_stack.push_spawn_periodically( |
|
|
|
|
manager.clone(), |
|
|
|
|
20 * 60, |
|
|
|
|
|_canceller, manager| async move { manager.sync_all_domains().await }, |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
manager |
|
|
|
|
} |
|
|
|
@ -301,18 +298,6 @@ impl ManagerImpl { |
|
|
|
|
|
|
|
|
|
Ok(()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
async fn sync_all_domains_job(&self, canceller: CancellationToken) { |
|
|
|
|
let mut interval = tokio::time::interval(tokio::time::Duration::from_secs(20 * 60)); |
|
|
|
|
loop { |
|
|
|
|
tokio::select! { |
|
|
|
|
_ = canceller.cancelled() => return, |
|
|
|
|
_ = interval.tick() => if let Err(err) = self.sync_all_domains().await { |
|
|
|
|
log::error!("Failed to sync all domains: {err}") |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
impl Manager for ManagerImpl { |
|
|
|
|