module Magicbane.Metrics (
module Magicbane.Metrics
, module X
) where
import ClassyPrelude
import Data.Has
import qualified Control.Monad.Metrics
import Control.Monad.Metrics as X hiding (initialize, initializeWith, run, run')
import System.Metrics as X (Store, registerGcMetrics)
import qualified System.Remote.Monitoring.Wai
import System.Remote.Monitoring.Wai as X (serverMetricStore)
import Network.Wai.Metrics as X
newtype ModMetrics = ModMetrics Metrics
instance (Has ModMetrics α, Monad μ, MonadReader α μ) ⇒ MonadMetrics μ where
getMetrics = (\(ModMetrics m) → m) <$> asks getter
forkMetricsServer ∷ ByteString → Int → IO System.Remote.Monitoring.Wai.Server
forkMetricsServer = System.Remote.Monitoring.Wai.forkServer
newMetricsWith ∷ Store → IO ModMetrics
newMetricsWith x = ModMetrics <$> Control.Monad.Metrics.initializeWith x