chiark / gitweb /
api: Create and destroy a ToRecompute
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 13 Mar 2021 21:41:14 +0000 (21:41 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 13 Mar 2021 21:42:06 +0000 (21:42 +0000)
Nothing uses this yet.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/api.rs
src/hidden.rs

index bc965464faf99e37102e5afcab0188d8d9cb2150..ec1c2d00c2ab85d6011e1f6ff75bd505f61304fa 100644 (file)
@@ -104,6 +104,10 @@ fn api_piece_op<O: op::Complex>(form: Json<ApiPiece<O>>)
   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<O: op::Complex>(form: Json<ApiPiece<O>>)
       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))
+  })?;
   ""
 }
 
index b985a539286b9fb74f201a626ab3ad1edd572cc3..1ac7decf099384db4fffd3ff20e46ff1b1998a0a 100644 (file)
@@ -950,7 +950,7 @@ mod recompute {
   }
 }
 
-use recompute::*;
+pub use recompute::ToRecompute;
 
 #[must_use]
 pub struct NascentOccultation(Occultation);