Skip to content
  • Mike Fleetwood's avatar
    Write a generic progress bar class (#760709) · 0ca8ed73
    Mike Fleetwood authored and Curtis Gedak's avatar Curtis Gedak committed
    Write a generic progress bar class.  Has the following features:
    * Has separate progress and target numbers, rather than a single
      completion fraction, to enable the the next feature.
    * Optionally generates text reporting the amount of data copied using
      the progress and target numbers like this:
          "1.00 MiB of 16.00 MiB copied"
    * After running for 5 seconds, also add estimated remaining time.
      (Waits to allow the data copying rate to settle down a little before
      estimating the remaining time).  Looks like this:
          "1.00 MiB of 16.00 MiB copied (00:01:59) remaining)"
    
    The ProgressBar class is not driving the visual progress bar yet.  It
    has just been added into the internal block copy algorithm and generates
    debug messages showing the progress bar is operating correctly.
    Debugging looks like this:
    
        DEBUG: ProgressBar::start(target=2.0636e+09, text_mode=PROGRESSBAR_TEXT_COPY_BYTES)
        DEBUG: ProgressBar::update(progress=1.30023e+08) m_fraction=0.0630081 m_text="124.00 MiB of 1.92 GiB copied"
        DEBUG: ProgressBar::update(progress=2.67387e+08) m_fraction=0.129573 m_text="255.00 MiB of 1.92 GiB copied"
        DEBUG: ProgressBar::update(progress=4.0475e+08) m_fraction=0.196138 m_text="386.00 MiB of 1.92 GiB copied"
        ...
        DEBUG: ProgressBar::update(progress=1.13351e+09) m_fraction=0.549289 m_text="1.06 GiB of 1.92 GiB copied (00:00:04 remaining)"
        DEBUG: ProgressBar::update(progress=1.26249e+09) m_fraction=0.611789 m_text="1.18 GiB of 1.92 GiB copied (00:00:04 remaining)"
        DEBUG: ProgressBar::update(progress=1.39041e+09) m_fraction=0.67378 m_text="1.29 GiB of 1.92 GiB copied (00:00:03 remaining)"
        ...
        DEBUG: ProgressBar::update(progress=1.97552e+09) m_fraction=0.957317 m_text="1.84 GiB of 1.92 GiB copied (00:00:00 remaining)"
        DEBUG: ProgressBar::update(progress=2.0636e+09) m_fraction=1 m_text="1.92 GiB of 1.92 GiB copied"
        DEBUG: ProgressBar::stop()
    
    Bug 760709 - Add progress bars to XFS and EXT2/3/4 file system specific
                 copy methods
    0ca8ed73