From 8f3ccf7c5ca25c537f1941a1f211c67342fd0fa2 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 29 Apr 2022 23:54:05 +0100 Subject: [PATCH] Introduce and use methods for applying UnpreparedUpdates There are quite a few call sites where the nature of an UnpreparedUpdates is open-coded. Signed-off-by: Ian Jackson --- daemon/api.rs | 17 +++++------------ src/updates.rs | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/daemon/api.rs b/daemon/api.rs index 8828d570..7c4c2b35 100644 --- a/daemon/api.rs +++ b/daemon/api.rs @@ -184,7 +184,7 @@ fn api_piece_op(form: Json>) } }; - if let Some(unprepared) = if_chain! { + if_chain! { let g = &mut *ig; if let Some(was_held) = was_held; if let Some(gpc) = g.gs.pieces.get_mut(piece); @@ -196,12 +196,9 @@ fn api_piece_op(form: Json>) piece, was_held, ).map_err(|e| error!("internal error on change hook: {:?}", e)); - then { unprepared } - else { None } - } { - let mut prepub = PrepareUpdatesBuffer::new(&mut ig, None); - unprepared(&mut prepub); - prepub.finish(); + then { + PrepareUpdatesBuffer::only_unprepared(&mut ig, unprepared); + } } Ok::<(),Fatal>(()) @@ -216,11 +213,7 @@ fn api_piece_op(form: Json>) &g.ipieces)) }); - if let Some(unprepared) = unprepared_outer { - let mut prepub = PrepareUpdatesBuffer::new(&mut ig, None); - unprepared(&mut prepub); - prepub.finish(); - } + PrepareUpdatesBuffer::only_unprepared(&mut ig, unprepared_outer); ok?; "" diff --git a/src/updates.rs b/src/updates.rs index cdbd874e..ba22714f 100644 --- a/src/updates.rs +++ b/src/updates.rs @@ -819,6 +819,20 @@ impl<'r> PrepareUpdatesBuffer<'r> { } } + pub fn add_unprepared(&mut self, unprepared: UnpreparedUpdates) { + if let Some(unprepared) = unprepared { + unprepared(self); + } + } + + pub fn only_unprepared(ig: &'r mut Instance, unprepared: UnpreparedUpdates) { + if let Some(unprepared) = unprepared { + let mut prepub = PrepareUpdatesBuffer::new(ig, None); + unprepared(&mut prepub); + prepub.finish(); + } + } + pub fn finish(self) { } } -- 2.30.2