webapp: Progess bar fixes for many types of special remotes.

There was confusion in different parts of the progress bar code about
whether an update contained the total number of bytes transferred, or the
number of bytes transferred since the last update. One way this bug
showed up was progress bars that seemed to stick at zero for a long time.
In order to fix it comprehensively, I add a new BytesProcessed data type,
that is explicitly a total quantity of bytes, not a delta.

Note that this doesn't necessarily fix every problem with progress bars.
Particularly, buffering can now cause progress bars to seem to run ahead
of transfers, reaching 100% when data is still being uploaded.
This commit is contained in:
Joey Hess 2013-03-28 17:03:04 -04:00
parent 577128e9b8
commit cf07a2c412
24 changed files with 172 additions and 129 deletions

View file

@ -1,12 +0,0 @@
{- git-annex meter types
-
- Copyright 2012 Joey Hess <joey@kitenet.net>
-
- Licensed under the GNU GPL version 3 or higher.
-}
module Types.Meters where
{- An action that can be run repeatedly, feeding it the number of
- bytes sent or retrieved so far. -}
type MeterUpdate = (Integer -> IO ())

View file

@ -15,9 +15,9 @@ import Data.Ord
import qualified Git
import Types.Key
import Types.UUID
import Types.Meters
import Types.GitConfig
import Config.Cost
import Utility.Metered
type RemoteConfigKey = String
type RemoteConfig = M.Map RemoteConfigKey String