summaryrefslogtreecommitdiff
path: root/Assistant/Threads/TransferWatcher.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-07-05 14:34:20 -0600
committerGravatar Joey Hess <joey@kitenet.net>2012-07-05 14:34:20 -0600
commit71b5ad8398c4d86d5e9b993e175b48f2c5f0861d (patch)
tree46bd1db5caa16256b948146ecd2d61057bed44fb /Assistant/Threads/TransferWatcher.hs
parente8df726d07657c82c012a02697282c2bc642e742 (diff)
wrote transfer thread
finally!
Diffstat (limited to 'Assistant/Threads/TransferWatcher.hs')
-rw-r--r--Assistant/Threads/TransferWatcher.hs20
1 files changed, 8 insertions, 12 deletions
diff --git a/Assistant/Threads/TransferWatcher.hs b/Assistant/Threads/TransferWatcher.hs
index 811b045a8..f18d4e3f8 100644
--- a/Assistant/Threads/TransferWatcher.hs
+++ b/Assistant/Threads/TransferWatcher.hs
@@ -58,21 +58,17 @@ onAdd :: Handler
onAdd st dstatus file _ = case parseTransferFile file of
Nothing -> noop
Just t -> do
- minfo <- runThreadState st $ checkTransfer t
pid <- getProcessID
- case minfo of
- Nothing -> noop -- transfer already finished
- Just info
- | transferPid info == Just pid -> noop
- | otherwise -> adjustTransfers st dstatus
- (M.insertWith' const t info)
+ runThreadState st $ go t pid =<< checkTransfer t
+ where
+ go _ _ Nothing = noop -- transfer already finished
+ go t pid (Just info)
+ | transferPid info == Just pid = noop
+ | otherwise = adjustTransfers dstatus $
+ M.insertWith' const t info
{- Called when a transfer information file is removed. -}
onDel :: Handler
onDel st dstatus file _ = case parseTransferFile file of
Nothing -> noop
- Just t -> adjustTransfers st dstatus (M.delete t)
-
-adjustTransfers :: ThreadState -> DaemonStatusHandle -> (M.Map Transfer TransferInfo -> M.Map Transfer TransferInfo) -> IO ()
-adjustTransfers st dstatus a = runThreadState st $ modifyDaemonStatus dstatus $
- \s -> s { currentTransfers = a (currentTransfers s) }
+ Just t -> runThreadState st $ adjustTransfers dstatus $ M.delete t