chiark / gitweb /
cmdlistener: Break out some_synch_core
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 5 Apr 2021 15:42:04 +0000 (16:42 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 5 Apr 2021 15:42:04 +0000 (16:42 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/cmdlistener.rs

index ed4c94dd38015e5088bef4ab519c4ca1f5c42f85..b5d3142ba09cbf876735184ddb52c71a7e052745 100644 (file)
@@ -324,6 +324,16 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>(
     no_updates(ig, resp)
   }
 
+  #[throws(MgmtError)]
+  fn some_synch_core(ig: &mut InstanceGuard<'_>) -> (Generation, MGR) {
+    let mut buf = PrepareUpdatesBuffer::new(ig, None);
+    let gen = buf.gen();
+    drop(buf); // does updatenocc
+    ig.save_game_now()?;
+    // we handled the update ourselves, return no update info, just MGR
+    (gen, MGR::Synch(gen))
+  }
+
   #[throws(MgmtError)]
   fn update_links<'igr, 'ig: 'igr, 'cs,
                F: FnOnce(&mut Arc<LinksTable>) -> Result<Html,ME>>
@@ -438,14 +448,10 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>(
     },
 
     MGI::Synch => {
-      let (mut ig, _) = cs.check_acl(&ag, ig, PCH::Instance, &[TP::Play])?;
-      let mut buf = PrepareUpdatesBuffer::new(&mut ig, None);
-      let gen = buf.gen();
-      drop(buf); // does updatenocc
-      // we handled the update ourselves, return no update info
-      ig.save_game_now()?;
-      no_updates(ig, MGR::Synch(gen))
-    },
+      let (ig, _) = cs.check_acl(&ag, ig, PCH::Instance, &[TP::Play])?;
+      let (_gen, mgr) = some_synch_core(ig)?;
+      no_updates(ig, mgr)
+    }
 
     MGI::PieceIdLookupFwd { player, piece } => {
       pieceid_lookup(