pub mod rolling_transfers;
use super::*;
impl NetworkManager {
pub fn setup_tasks(&self) {
impl_setup_task_async!(
self,
Self,
rolling_transfers_task,
rolling_transfers_task_routine
);
{
let registry = self.registry();
self.address_filter_task.set_routine(move |s, l, t| {
let registry = registry.clone();
Box::pin(async move {
registry
.network_manager()
.address_filter()
.address_filter_task_routine(s, Timestamp::new(l), Timestamp::new(t))
.await
})
});
}
}
pub async fn tick_event_handler(&self, _evt: Arc<TickEvent>) {
if let Err(e) = self.tick().await {
error!("Error in network manager tick: {}", e);
}
}
#[cfg_attr(
feature = "instrument",
instrument(level = "trace", name = "NetworkManager::tick", skip_all, err, fields(__VEILID_LOG_KEY = self.log_key()))
)]
async fn tick(&self) -> EyreResult<()> {
let Ok(_startup_guard) = self.startup_context.startup_lock.enter() else {
return Ok(());
};
let net = self.net();
let receipt_manager = self.receipt_manager();
self.rolling_transfers_task.tick().await?;
self.address_filter_task.tick().await?;
net.tick().await?;
receipt_manager.tick().await?;
self.purge_client_allowlist();
Ok(())
}
pub async fn cancel_tasks(&self) {
veilid_log!(self debug "stopping receipt manager tasks");
let receipt_manager = self.receipt_manager();
receipt_manager.cancel_tasks().await;
let net = self.net();
net.cancel_tasks().await;
veilid_log!(self debug "stopping rolling transfers task");
if let Err(e) = self.rolling_transfers_task.stop().await {
veilid_log!(self warn "rolling_transfers_task not stopped: {}", e);
}
veilid_log!(self debug "stopping address filter task");
if let Err(e) = self.address_filter_task.stop().await {
veilid_log!(self warn "address_filter_task not stopped: {}", e);
}
}
}