{-# LANGUAGE GeneralizedNewtypeDeriving #-} module System.Metrics.Prometheus.Concurrent.RegistryT where import Control.Applicative ((<$>)) import Control.Monad.IO.Class (MonadIO, liftIO) import Control.Monad.Trans.Class (MonadTrans) import Control.Monad.Trans.Reader ( ReaderT (..), ask, ) import System.Metrics.Prometheus.Concurrent.Registry (Registry, new) import qualified System.Metrics.Prometheus.Concurrent.Registry as R import System.Metrics.Prometheus.Metric.Counter (Counter) import System.Metrics.Prometheus.Metric.Gauge (Gauge) import System.Metrics.Prometheus.Metric.Histogram (Histogram) import qualified System.Metrics.Prometheus.Metric.Histogram as Histogram import System.Metrics.Prometheus.MetricId ( Labels, MetricId, Name, ) import System.Metrics.Prometheus.Registry ( RegistrySample, listMetricIds, ) newtype RegistryT m a = RegistryT {forall (m :: * -> *) a. RegistryT m a -> ReaderT Registry m a unRegistryT :: ReaderT Registry m a} deriving (Applicative (RegistryT m) Applicative (RegistryT m) => (forall a b. RegistryT m a -> (a -> RegistryT m b) -> RegistryT m b) -> (forall a b. RegistryT m a -> RegistryT m b -> RegistryT m b) -> (forall a. a -> RegistryT m a) -> Monad (RegistryT m) forall a. a -> RegistryT m a forall a b. RegistryT m a -> RegistryT m b -> RegistryT m b forall a b. RegistryT m a -> (a -> RegistryT m b) -> RegistryT m b forall (m :: * -> *). Monad m => Applicative (RegistryT m) forall (m :: * -> *) a. Monad m => a -> RegistryT m a forall (m :: * -> *) a b. Monad m => RegistryT m a -> RegistryT m b -> RegistryT m b forall (m :: * -> *) a b. Monad m => RegistryT m a -> (a -> RegistryT m b) -> RegistryT m b forall (m :: * -> *). Applicative m => (forall a b. m a -> (a -> m b) -> m b) -> (forall a b. m a -> m b -> m b) -> (forall a. a -> m a) -> Monad m $c>>= :: forall (m :: * -> *) a b. Monad m => RegistryT m a -> (a -> RegistryT m b) -> RegistryT m b >>= :: forall a b. RegistryT m a -> (a -> RegistryT m b) -> RegistryT m b $c>> :: forall (m :: * -> *) a b. Monad m => RegistryT m a -> RegistryT m b -> RegistryT m b >> :: forall a b. RegistryT m a -> RegistryT m b -> RegistryT m b $creturn :: forall (m :: * -> *) a. Monad m => a -> RegistryT m a return :: forall a. a -> RegistryT m a Monad, (forall (m :: * -> *). Monad m => Monad (RegistryT m)) => (forall (m :: * -> *) a. Monad m => m a -> RegistryT m a) -> MonadTrans RegistryT forall (m :: * -> *). Monad m => Monad (RegistryT m) forall (m :: * -> *) a. Monad m => m a -> RegistryT m a forall (t :: (* -> *) -> * -> *). (forall (m :: * -> *). Monad m => Monad (t m)) => (forall (m :: * -> *) a. Monad m => m a -> t m a) -> MonadTrans t $clift :: forall (m :: * -> *) a. Monad m => m a -> RegistryT m a lift :: forall (m :: * -> *) a. Monad m => m a -> RegistryT m a MonadTrans, Functor (RegistryT m) Functor (RegistryT m) => (forall a. a -> RegistryT m a) -> (forall a b. RegistryT m (a -> b) -> RegistryT m a -> RegistryT m b) -> (forall a b c. (a -> b -> c) -> RegistryT m a -> RegistryT m b -> RegistryT m c) -> (forall a b. RegistryT m a -> RegistryT m b -> RegistryT m b) -> (forall a b. RegistryT m a -> RegistryT m b -> RegistryT m a) -> Applicative (RegistryT m) forall a. a -> RegistryT m a forall a b. RegistryT m a -> RegistryT m b -> RegistryT m a forall a b. RegistryT m a -> RegistryT m b -> RegistryT m b forall a b. RegistryT m (a -> b) -> RegistryT m a -> RegistryT m b forall a b c. (a -> b -> c) -> RegistryT m a -> RegistryT m b -> RegistryT m c forall (f :: * -> *). Functor f => (forall a. a -> f a) -> (forall a b. f (a -> b) -> f a -> f b) -> (forall a b c. (a -> b -> c) -> f a -> f b -> f c) -> (forall a b. f a -> f b -> f b) -> (forall a b. f a -> f b -> f a) -> Applicative f forall (m :: * -> *). Applicative m => Functor (RegistryT m) forall (m :: * -> *) a. Applicative m => a -> RegistryT m a forall (m :: * -> *) a b. Applicative m => RegistryT m a -> RegistryT m b -> RegistryT m a forall (m :: * -> *) a b. Applicative m => RegistryT m a -> RegistryT m b -> RegistryT m b forall (m :: * -> *) a b. Applicative m => RegistryT m (a -> b) -> RegistryT m a -> RegistryT m b forall (m :: * -> *) a b c. Applicative m => (a -> b -> c) -> RegistryT m a -> RegistryT m b -> RegistryT m c $cpure :: forall (m :: * -> *) a. Applicative m => a -> RegistryT m a pure :: forall a. a -> RegistryT m a $c<*> :: forall (m :: * -> *) a b. Applicative m => RegistryT m (a -> b) -> RegistryT m a -> RegistryT m b <*> :: forall a b. RegistryT m (a -> b) -> RegistryT m a -> RegistryT m b $cliftA2 :: forall (m :: * -> *) a b c. Applicative m => (a -> b -> c) -> RegistryT m a -> RegistryT m b -> RegistryT m c liftA2 :: forall a b c. (a -> b -> c) -> RegistryT m a -> RegistryT m b -> RegistryT m c $c*> :: forall (m :: * -> *) a b. Applicative m => RegistryT m a -> RegistryT m b -> RegistryT m b *> :: forall a b. RegistryT m a -> RegistryT m b -> RegistryT m b $c<* :: forall (m :: * -> *) a b. Applicative m => RegistryT m a -> RegistryT m b -> RegistryT m a <* :: forall a b. RegistryT m a -> RegistryT m b -> RegistryT m a Applicative, (forall a b. (a -> b) -> RegistryT m a -> RegistryT m b) -> (forall a b. a -> RegistryT m b -> RegistryT m a) -> Functor (RegistryT m) forall a b. a -> RegistryT m b -> RegistryT m a forall a b. (a -> b) -> RegistryT m a -> RegistryT m b forall (m :: * -> *) a b. Functor m => a -> RegistryT m b -> RegistryT m a forall (m :: * -> *) a b. Functor m => (a -> b) -> RegistryT m a -> RegistryT m b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f $cfmap :: forall (m :: * -> *) a b. Functor m => (a -> b) -> RegistryT m a -> RegistryT m b fmap :: forall a b. (a -> b) -> RegistryT m a -> RegistryT m b $c<$ :: forall (m :: * -> *) a b. Functor m => a -> RegistryT m b -> RegistryT m a <$ :: forall a b. a -> RegistryT m b -> RegistryT m a Functor, Monad (RegistryT m) Monad (RegistryT m) => (forall a. IO a -> RegistryT m a) -> MonadIO (RegistryT m) forall a. IO a -> RegistryT m a forall (m :: * -> *). Monad m => (forall a. IO a -> m a) -> MonadIO m forall (m :: * -> *). MonadIO m => Monad (RegistryT m) forall (m :: * -> *) a. MonadIO m => IO a -> RegistryT m a $cliftIO :: forall (m :: * -> *) a. MonadIO m => IO a -> RegistryT m a liftIO :: forall a. IO a -> RegistryT m a MonadIO) runRegistryT :: MonadIO m => RegistryT m a -> m a runRegistryT :: forall (m :: * -> *) a. MonadIO m => RegistryT m a -> m a runRegistryT RegistryT m a registry = IO Registry -> m Registry forall a. IO a -> m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO IO Registry new m Registry -> (Registry -> m a) -> m a forall a b. m a -> (a -> m b) -> m b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= ReaderT Registry m a -> Registry -> m a forall r (m :: * -> *) a. ReaderT r m a -> r -> m a runReaderT (RegistryT m a -> ReaderT Registry m a forall (m :: * -> *) a. RegistryT m a -> ReaderT Registry m a unRegistryT RegistryT m a registry) registerCounter :: MonadIO m => Name -> Labels -> RegistryT m Counter registerCounter :: forall (m :: * -> *). MonadIO m => Name -> Labels -> RegistryT m Counter registerCounter Name n Labels l = ReaderT Registry m Registry -> RegistryT m Registry forall (m :: * -> *) a. ReaderT Registry m a -> RegistryT m a RegistryT ReaderT Registry m Registry forall (m :: * -> *) r. Monad m => ReaderT r m r ask RegistryT m Registry -> (Registry -> RegistryT m Counter) -> RegistryT m Counter forall a b. RegistryT m a -> (a -> RegistryT m b) -> RegistryT m b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= IO Counter -> RegistryT m Counter forall a. IO a -> RegistryT m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO Counter -> RegistryT m Counter) -> (Registry -> IO Counter) -> Registry -> RegistryT m Counter forall b c a. (b -> c) -> (a -> b) -> a -> c . Name -> Labels -> Registry -> IO Counter R.registerCounter Name n Labels l registerGauge :: MonadIO m => Name -> Labels -> RegistryT m Gauge registerGauge :: forall (m :: * -> *). MonadIO m => Name -> Labels -> RegistryT m Gauge registerGauge Name n Labels l = ReaderT Registry m Registry -> RegistryT m Registry forall (m :: * -> *) a. ReaderT Registry m a -> RegistryT m a RegistryT ReaderT Registry m Registry forall (m :: * -> *) r. Monad m => ReaderT r m r ask RegistryT m Registry -> (Registry -> RegistryT m Gauge) -> RegistryT m Gauge forall a b. RegistryT m a -> (a -> RegistryT m b) -> RegistryT m b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= IO Gauge -> RegistryT m Gauge forall a. IO a -> RegistryT m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO Gauge -> RegistryT m Gauge) -> (Registry -> IO Gauge) -> Registry -> RegistryT m Gauge forall b c a. (b -> c) -> (a -> b) -> a -> c . Name -> Labels -> Registry -> IO Gauge R.registerGauge Name n Labels l registerHistogram :: MonadIO m => Name -> Labels -> [Histogram.UpperBound] -> RegistryT m Histogram registerHistogram :: forall (m :: * -> *). MonadIO m => Name -> Labels -> [UpperBound] -> RegistryT m Histogram registerHistogram Name n Labels l [UpperBound] b = ReaderT Registry m Registry -> RegistryT m Registry forall (m :: * -> *) a. ReaderT Registry m a -> RegistryT m a RegistryT ReaderT Registry m Registry forall (m :: * -> *) r. Monad m => ReaderT r m r ask RegistryT m Registry -> (Registry -> RegistryT m Histogram) -> RegistryT m Histogram forall a b. RegistryT m a -> (a -> RegistryT m b) -> RegistryT m b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= IO Histogram -> RegistryT m Histogram forall a. IO a -> RegistryT m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO Histogram -> RegistryT m Histogram) -> (Registry -> IO Histogram) -> Registry -> RegistryT m Histogram forall b c a. (b -> c) -> (a -> b) -> a -> c . Name -> Labels -> [UpperBound] -> Registry -> IO Histogram R.registerHistogram Name n Labels l [UpperBound] b removeMetric :: MonadIO m => MetricId -> RegistryT m () removeMetric :: forall (m :: * -> *). MonadIO m => MetricId -> RegistryT m () removeMetric MetricId i = ReaderT Registry m Registry -> RegistryT m Registry forall (m :: * -> *) a. ReaderT Registry m a -> RegistryT m a RegistryT ReaderT Registry m Registry forall (m :: * -> *) r. Monad m => ReaderT r m r ask RegistryT m Registry -> (Registry -> RegistryT m ()) -> RegistryT m () forall a b. RegistryT m a -> (a -> RegistryT m b) -> RegistryT m b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= IO () -> RegistryT m () forall a. IO a -> RegistryT m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> RegistryT m ()) -> (Registry -> IO ()) -> Registry -> RegistryT m () forall b c a. (b -> c) -> (a -> b) -> a -> c . MetricId -> Registry -> IO () R.removeMetric MetricId i listMetricIds :: MonadIO m => RegistryT m [MetricId] listMetricIds :: forall (m :: * -> *). MonadIO m => RegistryT m [MetricId] listMetricIds = ReaderT Registry m Registry -> RegistryT m Registry forall (m :: * -> *) a. ReaderT Registry m a -> RegistryT m a RegistryT ReaderT Registry m Registry forall (m :: * -> *) r. Monad m => ReaderT r m r ask RegistryT m Registry -> (Registry -> RegistryT m [MetricId]) -> RegistryT m [MetricId] forall a b. RegistryT m a -> (a -> RegistryT m b) -> RegistryT m b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= IO [MetricId] -> RegistryT m [MetricId] forall a. IO a -> RegistryT m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO [MetricId] -> RegistryT m [MetricId]) -> (Registry -> IO [MetricId]) -> Registry -> RegistryT m [MetricId] forall b c a. (b -> c) -> (a -> b) -> a -> c . Registry -> IO [MetricId] R.listMetricIds sample :: Monad m => RegistryT m (IO RegistrySample) sample :: forall (m :: * -> *). Monad m => RegistryT m (IO RegistrySample) sample = Registry -> IO RegistrySample R.sample (Registry -> IO RegistrySample) -> RegistryT m Registry -> RegistryT m (IO RegistrySample) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> ReaderT Registry m Registry -> RegistryT m Registry forall (m :: * -> *) a. ReaderT Registry m a -> RegistryT m a RegistryT ReaderT Registry m Registry forall (m :: * -> *) r. Monad m => ReaderT r m r ask