summaryrefslogtreecommitdiff
path: root/Annex.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-04-10 17:08:07 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-04-10 17:08:07 -0400
commitc7a5cc5cc31377e5fed1fc59bfdeb503784d060d (patch)
tree2acb62d5fef9a1b2a02cbc43fa8c81b7108c91f1 /Annex.hs
parentb4dd6c2250efd959c2b0c0d032d9508ef55ea79a (diff)
get, move, copy, mirror: Concurrent downloads and uploads are now supported!
This works, and seems fairly robust. Clean get of 20 files at -J3. At -J10, there are some messages about ssh multiplexing, probably due to a race spinning up the ssh connection cacher. But, it manages to get all the files ok regardless. The progress bars are a scrambled mess though, due to bugs in ascii-progress, which I've already filed. Particularly this one: https://github.com/yamadapc/haskell-ascii-progress/issues/8
Diffstat (limited to 'Annex.hs')
-rw-r--r--Annex.hs3
1 files changed, 3 insertions, 0 deletions
diff --git a/Annex.hs b/Annex.hs
index 1c8618cc0..d3425c7e2 100644
--- a/Annex.hs
+++ b/Annex.hs
@@ -68,6 +68,7 @@ import Utility.Url
import "mtl" Control.Monad.Reader
import Control.Concurrent
+import Control.Concurrent.Async
import qualified Data.Map as M
import qualified Data.Set as S
@@ -133,6 +134,7 @@ data AnnexState = AnnexState
#endif
, existinghooks :: M.Map Git.Hook.Hook Bool
, desktopnotify :: DesktopNotify
+ , workers :: [Either AnnexState (Async AnnexState)]
}
newState :: GitConfig -> Git.Repo -> AnnexState
@@ -178,6 +180,7 @@ newState c r = AnnexState
#endif
, existinghooks = M.empty
, desktopnotify = mempty
+ , workers = []
}
{- Makes an Annex state object for the specified git repo.