From: Ian Jackson Date: Fri, 29 Apr 2022 22:54:05 +0000 (+0100) Subject: Introduce and use methods for applying UnpreparedUpdates X-Git-Tag: otter-1.1.0~424 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=8f3ccf7c5ca25c537f1941a1f211c67342fd0fa2;p=otter.git 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 --- 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) { } }