chiark / gitweb /
bundles: Use new size and ReadReporter to show upload progress
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 May 2021 00:14:48 +0000 (01:14 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 May 2021 00:16:06 +0000 (01:16 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bundles.rs

index 6518f07741f8f6f68dbaf0bc3a549fa945f03e6d..99acd21f7c23ee3360a94666f74238c995ea4a1b 100644 (file)
@@ -825,19 +825,20 @@ impl InstanceBundles {
 
 impl Uploading {
   #[throws(MgmtError)]
-  pub fn bulk<R,PW>(self, data: &mut R, size: usize, expected: &Hash,
+  pub fn bulk<R,PW>(self, data: R, size: usize, expected: &Hash,
                     for_progress: &mut ResponseWriter<PW>) -> Uploaded
   where R: Read, PW: Write
   {
     let mut for_progress = progress::ResponseOriginator::new(for_progress);
     let mut for_progress: &mut dyn progress::Originator = &mut for_progress;
 
-    for_progress.phase_item(Phase::Upload, ());
-
     let Uploading { id, mut file, instance } = self;
     let tmp = id.path_tmp(&instance);
 
-    let copied_size = io::copy(data, &mut file)
+    let mut data_reporter = progress::ReadOriginator::new(
+      &mut for_progress, Phase::Upload, size, data);
+
+    let copied_size = io::copy(&mut data_reporter, &mut file)
       .with_context(|| tmp.clone())
       .context("copy").map_err(IE::from)?;