From 42dcf50d49dd01e29a1ff2cd07e598023b1f6359 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 31 Mar 2021 19:14:13 +0100 Subject: [PATCH] cmd updates: Restart updates when insert follows delete Signed-off-by: Ian Jackson --- daemon/cmdlistener.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/daemon/cmdlistener.rs b/daemon/cmdlistener.rs index b7dfdd67..1556e5e0 100644 --- a/daemon/cmdlistener.rs +++ b/daemon/cmdlistener.rs @@ -924,6 +924,7 @@ fn execute_for_game<'cs, 'igr, 'ig: 'igr>( #[derive(Debug,Default)] struct UpdateHandlerBulk { pieces: HashMap>, + have_deleted: bool, logs: bool, raw: Vec, } @@ -952,6 +953,15 @@ impl UpdateHandler { match self { Bulk(bulk) => { for (upiece, uuop) in updates.pcs { + match uuop { + Insert(()) if bulk.have_deleted => { + UpdateHandler::Bulk(mem::take(bulk)).complete(g, who)?; + }, + Delete() => { + bulk.have_deleted = true; + }, + _ => { }, + } use PieceUpdateOp::*; let oe = bulk.pieces.get(&upiece); let ne = match (oe, uuop) { -- 2.30.2