From a9838a756fa7730e887598592a2f1b5b294e68a7 Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 1 Nov 2026 19:29:26 +0100 Subject: LWW everywhere, mostly --- src/state/host.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/state/host.rs') diff --git a/src/state/host.rs b/src/state/host.rs index 30ebcdb..eb7db35 100644 --- a/src/state/host.rs +++ b/src/state/host.rs @@ -226,6 +226,35 @@ impl Host for AppState { async move { state.mutate_doc(f).await } } + fn superseded(&self) -> crate::remake::Superseded { + self.superseded_writes + } + + fn commit_changes(&self, f: F) -> impl Future> + Send + where + F: FnOnce(&mut Document) -> T + Send + 'static, + T: Send + 'static, + { + let state = self.clone(); + async move { + tokio::task::spawn_blocking(move || { + let result = { + let mut replica = state.doc.blocking_write(); + if !replica.writable { + return Err(StoreError::Rejoining); + } + let result = f(&mut replica.doc); + replica.refresh_heads(); + result + }; + state.publish_change(); + Ok(result) + }) + .await + .expect("document write task panicked") + } + } + fn refuse_writes(&self, copy: bool) -> impl Future> + Send { let state = self.clone(); async move { -- cgit v1.3.1