split out daemonstatus types

This commit is contained in:
Joey Hess 2012-10-30 14:11:14 -04:00
parent 87ebdc8f90
commit f78ca9bc58
14 changed files with 71 additions and 56 deletions

View file

@ -20,6 +20,7 @@ module Assistant.Common (
import Common.Annex as X import Common.Annex as X
import Assistant.Monad as X import Assistant.Monad as X
import Assistant.Types.DaemonStatus as X
import Assistant.Alert import Assistant.Alert
import Assistant.DaemonStatus import Assistant.DaemonStatus

View file

@ -10,8 +10,7 @@
module Assistant.DaemonStatus where module Assistant.DaemonStatus where
import Common.Annex import Common.Annex
import Assistant.Alert import Assistant.Types.DaemonStatus
import Assistant.Pairing
import Utility.TempFile import Utility.TempFile
import Utility.NotificationBroadcaster import Utility.NotificationBroadcaster
import Logs.Transfer import Logs.Transfer
@ -27,52 +26,6 @@ import Data.Time
import System.Locale import System.Locale
import qualified Data.Map as M import qualified Data.Map as M
data DaemonStatus = DaemonStatus
-- False when the daemon is performing its startup scan
{ scanComplete :: Bool
-- Time when a previous process of the daemon was running ok
, lastRunning :: Maybe POSIXTime
-- True when the sanity checker is running
, sanityCheckRunning :: Bool
-- Last time the sanity checker ran
, lastSanityCheck :: Maybe POSIXTime
-- Currently running file content transfers
, currentTransfers :: TransferMap
-- Messages to display to the user.
, alertMap :: AlertMap
, lastAlertId :: AlertId
-- Ordered list of remotes to sync with.
, syncRemotes :: [Remote]
-- Pairing request that is in progress.
, pairingInProgress :: Maybe PairingInProgress
-- Broadcasts notifications about all changes to the DaemonStatus
, changeNotifier :: NotificationBroadcaster
-- Broadcasts notifications when queued or current transfers change.
, transferNotifier :: NotificationBroadcaster
-- Broadcasts notifications when there's a change to the alerts
, alertNotifier :: NotificationBroadcaster
}
type TransferMap = M.Map Transfer TransferInfo
{- This TMVar is never left empty, so accessing it will never block. -}
type DaemonStatusHandle = TMVar DaemonStatus
newDaemonStatus :: IO DaemonStatus
newDaemonStatus = DaemonStatus
<$> pure False
<*> pure Nothing
<*> pure False
<*> pure Nothing
<*> pure M.empty
<*> pure M.empty
<*> pure firstAlertId
<*> pure []
<*> pure Nothing
<*> newNotificationBroadcaster
<*> newNotificationBroadcaster
<*> newNotificationBroadcaster
getDaemonStatus :: DaemonStatusHandle -> IO DaemonStatus getDaemonStatus :: DaemonStatusHandle -> IO DaemonStatus
getDaemonStatus = atomically . readTMVar getDaemonStatus = atomically . readTMVar

View file

@ -27,6 +27,7 @@ import Control.Monad.Base (liftBase, MonadBase)
import Common.Annex import Common.Annex
import Assistant.Types.ThreadedMonad import Assistant.Types.ThreadedMonad
import Assistant.Types.DaemonStatus
import Assistant.DaemonStatus import Assistant.DaemonStatus
import Assistant.Types.ScanRemotes import Assistant.Types.ScanRemotes
import Assistant.TransferQueue import Assistant.TransferQueue

View file

@ -11,7 +11,6 @@ import Assistant.Common
import Assistant.Pairing import Assistant.Pairing
import Assistant.Pairing.Network import Assistant.Pairing.Network
import Assistant.Pairing.MakeRemote import Assistant.Pairing.MakeRemote
import Assistant.DaemonStatus
import Assistant.WebApp import Assistant.WebApp
import Assistant.WebApp.Types import Assistant.WebApp.Types
import Assistant.Alert import Assistant.Alert

View file

@ -12,7 +12,6 @@ module Assistant.Threads.PushNotifier where
import Assistant.Common import Assistant.Common
import Assistant.XMPP import Assistant.XMPP
import Assistant.DaemonStatus
import Assistant.Pushes import Assistant.Pushes
import Assistant.Sync import Assistant.Sync
import qualified Remote import qualified Remote

View file

@ -12,7 +12,6 @@ import Assistant.Commits
import Assistant.Types.Commits import Assistant.Types.Commits
import Assistant.Pushes import Assistant.Pushes
import Assistant.Alert import Assistant.Alert
import Assistant.DaemonStatus
import Assistant.Sync import Assistant.Sync
import Utility.ThreadScheduler import Utility.ThreadScheduler
import qualified Remote import qualified Remote

View file

@ -23,6 +23,7 @@ module Assistant.TransferQueue (
import Common.Annex import Common.Annex
import Assistant.DaemonStatus import Assistant.DaemonStatus
import Assistant.Types.DaemonStatus
import Logs.Transfer import Logs.Transfer
import Types.Remote import Types.Remote
import qualified Remote import qualified Remote

View file

@ -12,6 +12,7 @@ module Assistant.TransferSlots where
import Common.Annex import Common.Annex
import Utility.ThreadScheduler import Utility.ThreadScheduler
import Assistant.DaemonStatus import Assistant.DaemonStatus
import Assistant.Types.DaemonStatus
import Logs.Transfer import Logs.Transfer
import qualified Control.Exception as E import qualified Control.Exception as E

View file

@ -0,0 +1,66 @@
{- git-annex assistant daemon status
-
- Copyright 2012 Joey Hess <joey@kitenet.net>
-
- Licensed under the GNU GPL version 3 or higher.
-}
{-# LANGUAGE RankNTypes, ImpredicativeTypes #-}
module Assistant.Types.DaemonStatus where
import Common.Annex
import Assistant.Alert
import Assistant.Pairing
import Utility.NotificationBroadcaster
import Logs.Transfer
import Control.Concurrent.STM
import Data.Time.Clock.POSIX
import qualified Data.Map as M
data DaemonStatus = DaemonStatus
-- False when the daemon is performing its startup scan
{ scanComplete :: Bool
-- Time when a previous process of the daemon was running ok
, lastRunning :: Maybe POSIXTime
-- True when the sanity checker is running
, sanityCheckRunning :: Bool
-- Last time the sanity checker ran
, lastSanityCheck :: Maybe POSIXTime
-- Currently running file content transfers
, currentTransfers :: TransferMap
-- Messages to display to the user.
, alertMap :: AlertMap
, lastAlertId :: AlertId
-- Ordered list of remotes to sync with.
, syncRemotes :: [Remote]
-- Pairing request that is in progress.
, pairingInProgress :: Maybe PairingInProgress
-- Broadcasts notifications about all changes to the DaemonStatus
, changeNotifier :: NotificationBroadcaster
-- Broadcasts notifications when queued or current transfers change.
, transferNotifier :: NotificationBroadcaster
-- Broadcasts notifications when there's a change to the alerts
, alertNotifier :: NotificationBroadcaster
}
type TransferMap = M.Map Transfer TransferInfo
{- This TMVar is never left empty, so accessing it will never block. -}
type DaemonStatusHandle = TMVar DaemonStatus
newDaemonStatus :: IO DaemonStatus
newDaemonStatus = DaemonStatus
<$> pure False
<*> pure Nothing
<*> pure False
<*> pure Nothing
<*> pure M.empty
<*> pure M.empty
<*> pure firstAlertId
<*> pure []
<*> pure Nothing
<*> newNotificationBroadcaster
<*> newNotificationBroadcaster
<*> newNotificationBroadcaster

View file

@ -15,7 +15,6 @@ import Assistant.WebApp.Types
import Assistant.WebApp.SideBar import Assistant.WebApp.SideBar
import Assistant.WebApp.Utility import Assistant.WebApp.Utility
import Assistant.WebApp.Configurators.Local import Assistant.WebApp.Configurators.Local
import Assistant.DaemonStatus
import Assistant.XMPP import Assistant.XMPP
import Utility.Yesod import Utility.Yesod
import qualified Remote import qualified Remote

View file

@ -16,7 +16,6 @@ import Assistant.WebApp.Utility
import Assistant.WebApp.SideBar import Assistant.WebApp.SideBar
import Assistant.WebApp.Notifications import Assistant.WebApp.Notifications
import Assistant.WebApp.Configurators import Assistant.WebApp.Configurators
import Assistant.DaemonStatus
import Assistant.TransferQueue import Assistant.TransferQueue
import Utility.NotificationBroadcaster import Utility.NotificationBroadcaster
import Utility.Yesod import Utility.Yesod

View file

@ -12,7 +12,6 @@ module Assistant.WebApp.Notifications where
import Assistant.Common import Assistant.Common
import Assistant.WebApp import Assistant.WebApp
import Assistant.WebApp.Types import Assistant.WebApp.Types
import Assistant.DaemonStatus
import Utility.NotificationBroadcaster import Utility.NotificationBroadcaster
import Utility.Yesod import Utility.Yesod

View file

@ -13,7 +13,6 @@ import Assistant.Common
import Assistant.WebApp import Assistant.WebApp
import Assistant.WebApp.Types import Assistant.WebApp.Types
import Assistant.WebApp.Notifications import Assistant.WebApp.Notifications
import Assistant.DaemonStatus
import Assistant.Alert import Assistant.Alert
import Utility.NotificationBroadcaster import Utility.NotificationBroadcaster
import Utility.Yesod import Utility.Yesod

View file

@ -11,7 +11,6 @@ import Common.Annex
import Command import Command
import Assistant import Assistant
import Assistant.Common import Assistant.Common
import Assistant.DaemonStatus
import Assistant.Threads.WebApp import Assistant.Threads.WebApp
import Assistant.WebApp import Assistant.WebApp
import Assistant.Install import Assistant.Install