From ab8f5447680da56ce658abbc33c222219c3204ef Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 6 Nov 2026 16:47:32 +0100 Subject: plumtree --- src/swarm/tree.rs | 46 ++-------------------------------------------- 1 file changed, 2 insertions(+), 44 deletions(-) (limited to 'src/swarm/tree.rs') diff --git a/src/swarm/tree.rs b/src/swarm/tree.rs index de865de..db3e920 100644 --- a/src/swarm/tree.rs +++ b/src/swarm/tree.rs @@ -30,8 +30,6 @@ use std::collections::{BTreeMap, BTreeSet, HashMap, VecDeque}; use std::sync::Arc; -use tracing::trace; - use crate::locks::MutexExt; use crate::state::AppState; use crate::swarm::{reach, rtt, topology}; @@ -663,48 +661,8 @@ pub(crate) async fn forward( from: &str, changes: &[crate::document::ChangeHash], ) -> Option { - let mut plan = plan(state, writer).await?; - if !changes.is_empty() { - for neighbour in &plan.covered { - if let Some(peer_state) = state.get_peer_state(neighbour).await { - peer_state - .lock() - .await - .sync - .known_to_peer(changes, tokio::time::Instant::now()); - } - } - } - plan.children.retain(|child| child != from); - let children = &plan.children; - let replica = if changes.is_empty() { - None - } else { - Some(state.doc.read().await) - }; - for child in children { - if let Some(peer_state) = state.get_peer_state(child).await { - let mut peer_state = peer_state.lock().await; - peer_state.tree_writer = Some(writer); - if let Some(replica) = &replica { - peer_state.sync.with_predecessors( - &replica.doc, - changes, - tokio::time::Instant::now(), - ); - } - } - state.stats.tree_forward(); - state.request_sync(child); - } - if !children.is_empty() { - trace!( - writer, - children = children.len(), - "Passing a change on along the writer's tree" - ); - } - Some(plan) + let plan = plan(state, writer).await?; + Some(crate::swarm::dissemination::pass_on(state, writer, from, changes, plan).await) } /// Writers' trees as the way changes reach every member -- cgit v1.3.1