{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} module Periodic.Server.FuncStat ( FuncStat (..) , funcStat , FuncStatList ) where import Data.Byteable import qualified Data.ByteString.Char8 as B (intercalate, pack) import Data.Int (Int64) import Metro.IOHashMap (IOHashMap) import Periodic.Types (FuncName (..)) data FuncStat = FuncStat { sSchedAt :: Int64 , sWorker :: Int64 , sJob :: Int64 , sRunning :: Int64 , sLocking :: Int64 , sFuncName :: FuncName , sBroadcast :: Bool } instance Byteable FuncStat where toBytes FuncStat{..} = B.intercalate "," [ unFN sFuncName , B.pack $ show sWorker , B.pack $ show sJob , B.pack $ show sRunning , B.pack $ show sLocking , B.pack $ show sSchedAt ] type FuncStatList = IOHashMap FuncName FuncStat funcStat :: FuncName -> FuncStat funcStat sFuncName = FuncStat { sSchedAt = 0, sWorker = 0, sJob = 0, sRunning = 0, sLocking = 0, sBroadcast = False, .. }