{-# 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 { FuncStat -> Int64 sSchedAt :: Int64 , FuncStat -> Int64 sWorker :: Int64 , FuncStat -> Int64 sJob :: Int64 , FuncStat -> Int64 sRunning :: Int64 , FuncStat -> Int64 sLocking :: Int64 , FuncStat -> FuncName sFuncName :: FuncName , FuncStat -> Bool sBroadcast :: Bool } instance Byteable FuncStat where toBytes :: FuncStat -> ByteString toBytes FuncStat{..} = ByteString -> [ByteString] -> ByteString B.intercalate "," [ FuncName -> ByteString unFN FuncName sFuncName , String -> ByteString B.pack (String -> ByteString) -> String -> ByteString forall a b. (a -> b) -> a -> b $ Int64 -> String forall a. Show a => a -> String show Int64 sWorker , String -> ByteString B.pack (String -> ByteString) -> String -> ByteString forall a b. (a -> b) -> a -> b $ Int64 -> String forall a. Show a => a -> String show Int64 sJob , String -> ByteString B.pack (String -> ByteString) -> String -> ByteString forall a b. (a -> b) -> a -> b $ Int64 -> String forall a. Show a => a -> String show Int64 sRunning , String -> ByteString B.pack (String -> ByteString) -> String -> ByteString forall a b. (a -> b) -> a -> b $ Int64 -> String forall a. Show a => a -> String show Int64 sLocking , String -> ByteString B.pack (String -> ByteString) -> String -> ByteString forall a b. (a -> b) -> a -> b $ Int64 -> String forall a. Show a => a -> String show Int64 sSchedAt ] type FuncStatList = IOHashMap FuncName FuncStat funcStat :: FuncName -> FuncStat funcStat :: FuncName -> FuncStat funcStat sFuncName :: FuncName sFuncName = FuncStat :: Int64 -> Int64 -> Int64 -> Int64 -> Int64 -> FuncName -> Bool -> FuncStat FuncStat { sSchedAt :: Int64 sSchedAt = 0, sWorker :: Int64 sWorker = 0, sJob :: Int64 sJob = 0, sRunning :: Int64 sRunning = 0, sLocking :: Int64 sLocking = 0, sBroadcast :: Bool sBroadcast = Bool False, .. }