From adecfcff1a818cb6d80fd8e24412830ef0988e65 Mon Sep 17 00:00:00 2001 From: tv Date: Tue, 3 Nov 2026 02:00:58 +0100 Subject: probe list members --- src/swarm/topology/mod.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/swarm/topology/mod.rs') diff --git a/src/swarm/topology/mod.rs b/src/swarm/topology/mod.rs index 992c448..e5dacdd 100644 --- a/src/swarm/topology/mod.rs +++ b/src/swarm/topology/mod.rs @@ -113,6 +113,16 @@ pub(crate) fn summary(state: &AppState) -> Option { }) } +/// Whether `peer` is in the member list the neighbours were computed from (false until +/// the view is known). +pub(crate) fn is_listed(state: &AppState, peer: &str) -> bool { + state + .neighbours + .read_or_recover() + .as_ref() + .is_some_and(|view| view.members.iter().any(|member| member == peer)) +} + /// Whether we initiate contact with `peer`: HELLOs, keepalives, dormancy checks, sync /// openings. Everyone is a neighbour until the view is known (while joining, or before /// any member registered), so joining works as in a full mesh. We always *answer* -- cgit v1.3.1