From 6d66ebdb6d38e7a9b891fb05d5c9c1ca933ceb21 Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 2 Nov 2026 23:31:25 +0100 Subject: add links relay test --- src/swarm/links.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src/swarm') diff --git a/src/swarm/links.rs b/src/swarm/links.rs index 80def7a..cdbae67 100644 --- a/src/swarm/links.rs +++ b/src/swarm/links.rs @@ -131,6 +131,39 @@ impl Links { .collect() } + /// Who is subscribed to our links (not run out). + #[cfg(test)] + pub(crate) fn subscribers(&self) -> Vec { + let now = Instant::now(); + self.inner + .lock_or_recover() + .subscribers + .iter() + .filter(|(_, (_, until))| now < *until) + .map(|(peer, _)| peer.clone()) + .collect() + } + + /// The members we ask on others' behalf (relayed, not run out), and who asked. + #[cfg(test)] + pub(crate) fn relaying(&self) -> Vec<(String, Vec)> { + let now = Instant::now(); + self.inner + .lock_or_recover() + .relaying + .iter() + .map(|(member, askers)| { + let askers: Vec = askers + .iter() + .filter(|(_, relaying)| now < relaying.until) + .map(|(asker, _)| asker.clone()) + .collect(); + (member.clone(), askers) + }) + .filter(|(_, askers)| !askers.is_empty()) + .collect() + } + /// The members our subscriptions are with, and the peers relaying for us (not run /// out). #[cfg_attr(not(feature = "dashboard"), allow(dead_code))] -- cgit v1.3.1