summaryrefslogtreecommitdiff
path: root/Remote
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-12-07 14:25:01 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-12-07 14:25:01 -0400
commit51b648ac6e11d0d5a9e617e45d236bd850894285 (patch)
tree15a28ce8095bba46d704ac2ac68448c5e1bf81eb /Remote
parent84023bbceb672c757a0cbd93571b303f154f8001 (diff)
more p2p progress meters
Display progress meter on send and receive from remote. Added a new hGetMetered that can read an exact number of bytes (or less), updating a meter as it goes. This commit was sponsored by Andreas on Patreon.
Diffstat (limited to 'Remote')
-rw-r--r--Remote/P2P.hs11
-rw-r--r--Remote/S3.hs2
2 files changed, 8 insertions, 5 deletions
diff --git a/Remote/P2P.hs b/Remote/P2P.hs
index 8286a9a18..1d7ede30f 100644
--- a/Remote/P2P.hs
+++ b/Remote/P2P.hs
@@ -24,6 +24,7 @@ import Annex.UUID
import Config
import Config.Cost
import Remote.Helper.Git
+import Messages.Progress
import Utility.Metered
import Utility.AuthToken
import Types.NumCopies
@@ -74,12 +75,14 @@ chainGen addr r u c gc = do
return (Just this)
store :: UUID -> P2PAddress -> ConnectionPool -> Key -> AssociatedFile -> MeterUpdate -> Annex Bool
-store u addr connpool k af p = fromMaybe False
- <$> runProto u addr connpool (P2P.put k af p)
+store u addr connpool k af p =
+ metered (Just p) k $ \p' -> fromMaybe False
+ <$> runProto u addr connpool (P2P.put k af p')
retrieve :: UUID -> P2PAddress -> ConnectionPool -> Key -> AssociatedFile -> FilePath -> MeterUpdate -> Annex (Bool, Verification)
-retrieve u addr connpool k af dest _p = unVerified $ fromMaybe False
- <$> runProto u addr connpool (P2P.get dest k af)
+retrieve u addr connpool k af dest p = unVerified $
+ metered (Just p) k $ \p' -> fromMaybe False
+ <$> runProto u addr connpool (P2P.get dest k af p')
remove :: UUID -> P2PAddress -> ConnectionPool -> Key -> Annex Bool
remove u addr connpool k = fromMaybe False
diff --git a/Remote/S3.hs b/Remote/S3.hs
index c6f23333f..4c1bd5784 100644
--- a/Remote/S3.hs
+++ b/Remote/S3.hs
@@ -193,7 +193,7 @@ store _r info h = fileStorer $ \k f p -> do
uploadid <- S3.imurUploadId <$> sendS3Handle h startreq
-- The actual part size will be a even multiple of the
- -- 32k chunk size that hGetUntilMetered uses.
+ -- 32k chunk size that lazy ByteStrings use.
let partsz' = (partsz `div` toInteger defaultChunkSize) * toInteger defaultChunkSize
-- Send parts of the file, taking care to stream each part