veilid_core/network_manager/tasks/
mod.rs

1pub mod rolling_transfers;
2
3use super::*;
4
5impl NetworkManager {
6    pub fn setup_tasks(&self) {
7        // Set rolling transfers tick task
8        impl_setup_task!(
9            self,
10            Self,
11            rolling_transfers_task,
12            rolling_transfers_task_routine
13        );
14
15        // Set address filter task
16        {
17            let registry = self.registry();
18            self.address_filter_task.set_routine(move |s, l, t| {
19                let registry = registry.clone();
20                Box::pin(async move {
21                    registry
22                        .network_manager()
23                        .address_filter()
24                        .address_filter_task_routine(s, Timestamp::new(l), Timestamp::new(t))
25                        .await
26                })
27            });
28        }
29    }
30
31    #[instrument(level = "trace", name = "NetworkManager::tick", skip_all, err)]
32    pub async fn tick(&self) -> EyreResult<()> {
33        let net = self.net();
34        let receipt_manager = self.receipt_manager();
35
36        // Run the rolling transfers task
37        self.rolling_transfers_task.tick().await?;
38
39        // Run the address filter task
40        self.address_filter_task.tick().await?;
41
42        // Run the low level network tick
43        net.tick().await?;
44
45        // Run the receipt manager tick
46        receipt_manager.tick().await?;
47
48        // Purge the client allowlist
49        self.purge_client_allowlist();
50
51        Ok(())
52    }
53
54    pub async fn cancel_tasks(&self) {
55        veilid_log!(self debug "stopping receipt manager tasks");
56        let receipt_manager = self.receipt_manager();
57        receipt_manager.cancel_tasks().await;
58
59        let net = self.net();
60        net.cancel_tasks().await;
61
62        veilid_log!(self debug "stopping rolling transfers task");
63        if let Err(e) = self.rolling_transfers_task.stop().await {
64            veilid_log!(self warn "rolling_transfers_task not stopped: {}", e);
65        }
66
67        veilid_log!(self debug "stopping address filter task");
68        if let Err(e) = self.address_filter_task.stop().await {
69            veilid_log!(self warn "address_filter_task not stopped: {}", e);
70        }
71    }
72}