From 247099f6282262cb72027aeeadce2e7bb8073eef Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 28 Jun 2012 20:01:03 -0400 Subject: refactor --- Assistant.hs | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) (limited to 'Assistant.hs') diff --git a/Assistant.hs b/Assistant.hs index 2a11741b4..a077cf10f 100644 --- a/Assistant.hs +++ b/Assistant.hs @@ -87,21 +87,24 @@ startDaemon assistant foreground pidfile <- fromRepo gitAnnexPidFile go $ Utility.Daemon.daemonize logfd (Just pidfile) False where - go a = withThreadState $ \st -> do + go daemonize = withThreadState $ \st -> do checkCanWatch dstatus <- startDaemonStatus - liftIO $ a $ do - changechan <- newChangeChan - commitchan <- newCommitChan - pushmap <- newFailedPushMap - _ <- forkIO $ commitThread st changechan commitchan - _ <- forkIO $ pushThread st commitchan pushmap - _ <- forkIO $ pushRetryThread st pushmap - _ <- forkIO $ mergeThread st - _ <- forkIO $ daemonStatusThread st dstatus - _ <- forkIO $ sanityCheckerThread st dstatus changechan - _ <- forkIO $ watchThread st dstatus changechan - waitForTermination + liftIO $ daemonize $ run dstatus st + run dstatus st = do + changechan <- newChangeChan + commitchan <- newCommitChan + pushmap <- newFailedPushMap + mapM_ (void . forkIO) + [ commitThread st changechan commitchan + , pushThread st commitchan pushmap + , pushRetryThread st pushmap + , mergeThread st + , daemonStatusThread st dstatus + , sanityCheckerThread st dstatus changechan + , watchThread st dstatus changechan + ] + waitForTermination stopDaemon :: Annex () stopDaemon = liftIO . Utility.Daemon.stopDaemon =<< fromRepo gitAnnexPidFile -- cgit v1.2.3