From c52d4b5ae43c202569c8801c312c2b56954ff8a0 Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 25 Oct 2026 23:00:56 +0100 Subject: add clock module The Clock module is the system clock that every unix timestamp new goes through. It comes with an offset that only tests can set. --- src/swarm/state_file.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/swarm/state_file.rs') diff --git a/src/swarm/state_file.rs b/src/swarm/state_file.rs index 62a6dbe..8b883fc 100644 --- a/src/swarm/state_file.rs +++ b/src/swarm/state_file.rs @@ -129,7 +129,12 @@ pub(crate) async fn update(state: &AppState, now: bool) { let seeds = { let replica = state.doc.read().await; - seeds(&replica.doc, state.local_id(), state.electorate_window) + seeds( + &replica.doc, + state.local_id(), + state.electorate_window, + state.clock.now_millis(), + ) }; let remembered = Remembered { swarm_id, seeds }; @@ -172,8 +177,7 @@ pub(crate) async fn update(state: &AppState, now: bool) { /// Members to rejoin through: those alive within the electorate window, stable ones /// first, at most `MAX_SEEDS`, sorted. Changes only when members join, leave or change /// tier, so the file rarely does. -fn seeds(doc: &automerge::AutoCommit, me: &str, window: Duration) -> Vec { - let now = crate::state::unix_millis(); +fn seeds(doc: &automerge::AutoCommit, me: &str, window: Duration, now: u64) -> Vec { let (mut stable, transient): (Vec, Vec) = members::electorate(doc, now, window) .into_iter() .filter(|pk| pk != me) -- cgit v1.3.1