prometheus-0.1.0.0: src/System/Metrics/Prometheus/Registry.hs
module System.Metrics.Prometheus.Registry where
import Data.Map (Map)
import qualified Data.Map as Map
import System.Metrics.Prometheus.Counter (Counter)
import qualified System.Metrics.Prometheus.Counter as Counter
import System.Metrics.Prometheus.Gauge (Gauge)
import qualified System.Metrics.Prometheus.Gauge as Gauge
import System.Metrics.Prometheus.Metric (Metric)
import qualified System.Metrics.Prometheus.Metric as Metric
import System.Metrics.Prometheus.MetricId (MetricId)
newtype Registry = Registry { unRegistry :: Map MetricId Metric }
registerCounter :: MetricId -> Registry -> IO (Counter, Registry)
registerCounter mid registry = do
counter <- Counter.new
return (counter, Registry $ Map.insertWithKey collision mid (Metric.Counter counter) (unRegistry registry))
where collision k n o = error "oh shit"
registerGauge :: MetricId -> Registry -> IO (Gauge, Registry)
registerGauge mid registry = do
gauge <- Gauge.new
return (gauge, Registry $ Map.insertWithKey collision mid (Metric.Gauge gauge) (unRegistry registry))
where collision k n o = error "oh shit"