From: Ian Jackson Date: Sat, 13 Mar 2021 21:41:14 +0000 (+0000) Subject: api: Create and destroy a ToRecompute X-Git-Tag: otter-0.4.0~89 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=07edc81a00345c0301e8eeda17c7b6822bb32e65;p=otter.git api: Create and destroy a ToRecompute Nothing uses this yet. Signed-off-by: Ian Jackson --- diff --git a/daemon/api.rs b/daemon/api.rs index bc965464..ec1c2d00 100644 --- a/daemon/api.rs +++ b/daemon/api.rs @@ -104,6 +104,10 @@ fn api_piece_op(form: Json>) let client = iad.ident; let mut ig = iad.gref.lock()?; ig.save_game_later(); + + ToRecompute::with(move |to_recompute| { + let r = (||{ + let g = &mut *ig; let cl = &mut g.clients.byid_mut(client)?; // ^ can only fail if we raced @@ -160,14 +164,25 @@ fn api_piece_op(form: Json>) let mut buf = PrepareUpdatesBuffer::new(g, Some((wrc, client, form.cseq)), Some(1 + log.len())); - + buf.piece_update(piece, ops); buf.piece_updates(updates); buf.log_updates(log); debug!("api_piece_op OK: {:?}", &form); } - } + }; + + Ok::<(),OE>(()) + })(); + + let g = &mut *ig; + let gs = &mut g.gs; + (r, to_recompute.implement(&mut gs.players, + &mut gs.pieces, + &mut gs.occults, + &g.ipieces)) + })?; "" } diff --git a/src/hidden.rs b/src/hidden.rs index b985a539..1ac7decf 100644 --- a/src/hidden.rs +++ b/src/hidden.rs @@ -950,7 +950,7 @@ mod recompute { } } -use recompute::*; +pub use recompute::ToRecompute; #[must_use] pub struct NascentOccultation(Occultation);