From 8a134df62167a85fa083ccf480a939fd654e2419 Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 6 Nov 2026 16:35:02 +0100 Subject: dissemination trait --- src/swarm/tree.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/swarm/tree.rs') diff --git a/src/swarm/tree.rs b/src/swarm/tree.rs index 064f5b9..de865de 100644 --- a/src/swarm/tree.rs +++ b/src/swarm/tree.rs @@ -707,6 +707,42 @@ pub(crate) async fn forward( Some(plan) } +/// Writers' trees as the way changes reach every member +/// (`swarm::dissemination::Dissemination`): `plan`, `forward` and `note_arrival` above. +pub(crate) struct WritersTrees; + +#[async_trait::async_trait] +impl crate::swarm::dissemination::Dissemination for WritersTrees { + fn name(&self) -> &'static str { + "writers-trees" + } + + async fn plan(&self, state: &AppState, writer: u64) -> Option { + plan(state, writer).await + } + + async fn forward( + &self, + state: &AppState, + writer: u64, + from: &str, + changes: &[crate::document::ChangeHash], + ) -> Option { + forward(state, writer, from, changes).await + } + + async fn note_arrival( + &self, + state: &AppState, + peer: &str, + writer: Option, + carried: bool, + authors: &[(String, Vec)], + ) { + note_arrival(state, peer, writer, carried, authors).await; + } +} + #[cfg(test)] mod tests { use super::*; -- cgit v1.3.1