From d1920c7543ec4533e857c6042fe5c2df8f16a255 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 10 May 2021 01:00:15 +0100 Subject: [PATCH] bundles: Move parsing into bulk phase Signed-off-by: Ian Jackson --- src/bundles.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/bundles.rs b/src/bundles.rs index dc40f20f..c4d5c639 100644 --- a/src/bundles.rs +++ b/src/bundles.rs @@ -56,7 +56,7 @@ pub struct Uploading { /// returned by start_upload pub struct Uploaded { id: Id, - file: fs::File, + parsed: Parsed, } #[derive(Debug,Copy,Clone,Error)] @@ -544,25 +544,26 @@ impl Uploading { let (hash, file) = file.finish(); - let file = file.into_inner().map_err(|e| e.into_error()) + let mut file = file.into_inner().map_err(|e| e.into_error()) .with_context(|| tmp.clone()).context("flush").map_err(IE::from)?; if hash.as_slice() != &expected.0[..] { throw!(ME::UploadCorrupted) } - Uploaded { id, file } + file.rewind().context("rewind"). map_err(IE::from)?; + let mut file = BufReader::new(file); + + let parsed = parse_bundle::(id, &mut file, &tmp)?; + + Uploaded { id, parsed } } } impl InstanceBundles { #[throws(MgmtError)] pub fn finish_upload(&mut self, ig: &mut Instance, - Uploaded { id, mut file }: Uploaded) { + Uploaded { id, parsed }: Uploaded) { let tmp = id.path_tmp(&ig.name); let install = id.path_(&ig.name); - file.rewind().context("rewind"). map_err(IE::from)?; - let mut file = BufReader::new(file); - - let parsed = parse_bundle::(id, &mut file, &install)?; incorporate_bundle(self, ig, id, parsed)?; self.updated(ig); -- 2.30.2