use super::*;
impl NetworkManager {
#[cfg_attr(feature = "instrument", instrument(level = "trace", skip(self), err, fields(__VEILID_LOG_KEY = self.log_key())))]
#[allow(clippy::unused_async)]
pub async fn rolling_transfers_task_routine(
&self,
_stop_token: StopToken,
last_ts: Timestamp,
cur_ts: Timestamp,
) -> EyreResult<()> {
{
let inner = &mut *self.inner.lock();
inner
.stats
.self_stats
.transfer_stats_accounting
.roll_transfers(last_ts, cur_ts, &mut inner.stats.self_stats.transfer_stats);
let mut dead_addrs: HashSet<PerAddressStatsKey> = HashSet::new();
for (addr, stats) in &mut inner.stats.per_address_stats {
stats.transfer_stats_accounting.roll_transfers(
last_ts,
cur_ts,
&mut stats.transfer_stats,
);
if cur_ts.duration_since(stats.last_seen_ts) >= IPADDR_MAX_INACTIVE_DURATION {
dead_addrs.insert(*addr);
}
}
for da in &dead_addrs {
inner.stats.per_address_stats.remove(da);
}
}
self.send_network_update();
Ok(())
}
}