packages feed

prometheus-2.2.4: src/System/Metrics/Prometheus/Metric.hs

module System.Metrics.Prometheus.Metric where

import System.Metrics.Prometheus.Metric.Counter (
    Counter,
    CounterSample,
 )
import System.Metrics.Prometheus.Metric.Gauge (Gauge, GaugeSample)
import System.Metrics.Prometheus.Metric.Histogram (
    Histogram,
    HistogramSample,
 )
import System.Metrics.Prometheus.Metric.Summary (SummarySample)


data Metric
    = CounterMetric Counter
    | GaugeMetric Gauge
    | -- | Summary S.Summary
      HistogramMetric Histogram


data MetricSample
    = CounterMetricSample CounterSample
    | GaugeMetricSample GaugeSample
    | HistogramMetricSample HistogramSample
    | SummaryMetricSample SummarySample


metricSample ::
    (CounterSample -> a) ->
    (GaugeSample -> a) ->
    (HistogramSample -> a) ->
    (SummarySample -> a) ->
    MetricSample ->
    a
metricSample f _ _ _ (CounterMetricSample s) = f s
metricSample _ f _ _ (GaugeMetricSample s) = f s
metricSample _ _ f _ (HistogramMetricSample s) = f s
metricSample _ _ _ f (SummaryMetricSample s) = f s