added currentTransfers

This commit is contained in:
Joey Hess 2012-07-02 16:11:04 -04:00
parent ad0b827957
commit 32e5e02e43

View file

@ -17,6 +17,8 @@ import System.Posix.Types
import Data.Time.Clock.POSIX import Data.Time.Clock.POSIX
import Data.Time import Data.Time
import System.Locale import System.Locale
import Logs.Transfer
import qualified Data.Map as M
data DaemonStatus = DaemonStatus data DaemonStatus = DaemonStatus
-- False when the daemon is performing its startup scan -- False when the daemon is performing its startup scan
@ -27,6 +29,8 @@ data DaemonStatus = DaemonStatus
, sanityCheckRunning :: Bool , sanityCheckRunning :: Bool
-- Last time the sanity checker ran -- Last time the sanity checker ran
, lastSanityCheck :: Maybe POSIXTime , lastSanityCheck :: Maybe POSIXTime
-- Currently running file content transfers
, currentTransfers :: M.Map Transfer TransferInfo
} }
deriving (Show) deriving (Show)
@ -38,6 +42,7 @@ newDaemonStatus = DaemonStatus
, lastRunning = Nothing , lastRunning = Nothing
, sanityCheckRunning = False , sanityCheckRunning = False
, lastSanityCheck = Nothing , lastSanityCheck = Nothing
, currentTransfers = M.empty
} }
getDaemonStatus :: DaemonStatusHandle -> Annex DaemonStatus getDaemonStatus :: DaemonStatusHandle -> Annex DaemonStatus
@ -47,15 +52,17 @@ modifyDaemonStatus :: DaemonStatusHandle -> (DaemonStatus -> DaemonStatus) -> An
modifyDaemonStatus handle a = liftIO $ modifyMVar_ handle (return . a) modifyDaemonStatus handle a = liftIO $ modifyMVar_ handle (return . a)
{- Load any previous daemon status file, and store it in the MVar for this {- Load any previous daemon status file, and store it in the MVar for this
- process to use as its DaemonStatus. -} - process to use as its DaemonStatus. Also gets current transfer status. -}
startDaemonStatus :: Annex DaemonStatusHandle startDaemonStatus :: Annex DaemonStatusHandle
startDaemonStatus = do startDaemonStatus = do
file <- fromRepo gitAnnexDaemonStatusFile file <- fromRepo gitAnnexDaemonStatusFile
status <- liftIO $ status <- liftIO $
catchDefaultIO (readDaemonStatusFile file) newDaemonStatus catchDefaultIO (readDaemonStatusFile file) newDaemonStatus
transfers <- M.fromList <$> getTransfers
liftIO $ newMVar status liftIO $ newMVar status
{ scanComplete = False { scanComplete = False
, sanityCheckRunning = False , sanityCheckRunning = False
, currentTransfers = transfers
} }
{- This thread wakes up periodically and writes the daemon status to disk. -} {- This thread wakes up periodically and writes the daemon status to disk. -}