From 49439ad4f0dd4cd701ff4208fb2f80afe0c10396 Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 31 Oct 2026 04:33:10 +0100 Subject: topology: explode! --- src/swarm/members.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/swarm/members.rs') diff --git a/src/swarm/members.rs b/src/swarm/members.rs index 3bfb9cf..94db4c9 100644 --- a/src/swarm/members.rs +++ b/src/swarm/members.rs @@ -135,6 +135,28 @@ pub(crate) fn addresses(doc: &AutoCommit, pk: &str) -> Vec { } } +/// What the member list tells this node besides who its neighbours are: where members +/// are (`learn_addresses`), what they call themselves (`set_aliases`), and the relays +/// listed (`relays`). Done whenever the neighbours are recomputed (`topology::refresh`). +pub(crate) fn apply(state: &AppState, doc: &AutoCommit) { + learn_addresses(state, doc); + set_aliases(state, aliases(doc)); + state.transport.learn_relays(&relays(doc)); +} + +/// Hands the members' `aliases` to the logger, under every name that stands for each: +/// its node ID, and its addresses (`logging`, which renames them bare too). +fn set_aliases(state: &AppState, aliases: HashMap) { + let mut names = HashMap::new(); + for (member, alias) in aliases { + for address in state.transport.identities_of(&member) { + names.insert(address, alias.clone()); + } + names.insert(member, alias); + } + crate::logging::set_aliases(names); +} + /// Hands every other member's addresses to the transport (`Transport::learn_addresses`): /// the member list is how a node finds where members it never met are. pub(crate) fn learn_addresses(state: &AppState, doc: &AutoCommit) { -- cgit v1.3.1