statsdi 0.1.0.0 → 0.2.0.0
raw patch · 4 files changed
+22/−16 lines, 4 filesdep ~etherdep ~template-haskell
Dependency ranges changed: ether, template-haskell
Files
- src/Control/Monad/Stats/MTL.hs +5/−2
- src/Control/Monad/Stats/Monad.hs +14/−11
- src/Control/Monad/Stats/Types.hs +1/−1
- statsdi.cabal +2/−2
src/Control/Monad/Stats/MTL.hs view
@@ -19,13 +19,16 @@ , MTLStatsT, mtlStatsT ) where -import Control.Monad.Ether import Control.Monad.IO.Class import qualified Control.Monad.Stats.Monad as Ethereal import Control.Monad.Stats.Types import Data.Time.Clock (NominalDiffTime)+import Data.Proxy (Proxy(..))+import Ether -ethereal "MTLStatsT" "mtlStatsT"+data MTLStatsT+mtlStatsT :: Proxy MTLStatsT+mtlStatsT = Proxy type MonadStats m = (Monad m, MonadIO m, Ethereal.MonadStats MTLStatsT m) type StatsT = Ethereal.StatsT MTLStatsT
src/Control/Monad/Stats/Monad.hs view
@@ -1,9 +1,11 @@-{-# LANGUAGE ConstraintKinds #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-} module Control.Monad.Stats.Monad ( MonadStats , StatsT(..)@@ -24,7 +26,7 @@ import Control.Concurrent import Control.Concurrent.STM import Control.Exception (AsyncException (..), fromException)-import Control.Monad.Ether+import Control.Monad (forever, forM_, when, void) import Control.Monad.IO.Class import Control.Monad.Stats.Types import Control.Monad.Stats.Util@@ -37,6 +39,7 @@ import Data.IORef import Data.Time (NominalDiffTime) import Data.Time.Clock.POSIX (POSIXTime, getPOSIXTime)+import Ether.Reader import qualified Network.Socket as Socket hiding (recv, recvFrom, send, sendTo) import qualified Network.Socket.ByteString as Socket@@ -55,7 +58,7 @@ withSocket tag m = withEnvironment tag $ \e -> borrowTMVar (envSocket e) m withEnvironment :: (MonadStats tag m) => proxy tag -> (StatsTEnvironment -> m ()) -> m ()-withEnvironment tag f = ask tag >>= \case+withEnvironment (t :: proxy tag) f = (ask @tag) >>= \case NoStatsTEnvironment -> return () env -> f env @@ -144,7 +147,7 @@ ] reportServiceCheck :: (MonadStats tag m) => proxy tag -> ServiceCheck -> ServiceCheckValue -> m ()-reportServiceCheck t ServiceCheck{..} ServiceCheckValue{..} = ask t >>= \case+reportServiceCheck (t :: proxy tag) ServiceCheck{..} ServiceCheckValue{..} = (ask @tag) >>= \case NoStatsTEnvironment -> return () env -> do timestamp <- case scvTimestamp of@@ -224,7 +227,7 @@ (socket, addr) <- mkStatsDSocket c liftIO $ borrowTMVar socket (`Socket.connect` addr) theEnv <- mkStatsTEnv c socket- flip (runReaderT t) theEnv $ do+ flip runReaderT theEnv $ do tid <- forkStatsThread theEnv ret <- m reportSamples theEnv -- just in case our actions ran faster than 2x flush interval@@ -232,4 +235,4 @@ return ret runNoStatsT :: (MonadIO m) => proxy t -> StatsT t m a -> m a-runNoStatsT t = flip (runReaderT t) NoStatsTEnvironment+runNoStatsT t = flip runReaderT NoStatsTEnvironment
src/Control/Monad/Stats/Types.hs view
@@ -6,7 +6,6 @@ module Control.Monad.Stats.Types where import Control.Concurrent.STM (TMVar)-import Control.Monad.Ether import Control.Monad.IO.Class import Data.ByteString (ByteString) import qualified Data.ByteString as ByteString@@ -17,6 +16,7 @@ import qualified Data.HashMap.Strict as HashMap import Data.IORef import Data.Time.Clock.POSIX (POSIXTime)+import Ether import Network.Socket (Socket) import System.Random (Random)
statsdi.cabal view
@@ -1,5 +1,5 @@ name: statsdi-version: 0.1.0.0+version: 0.2.0.0 synopsis: A lovely [Dog]StatsD implementation description: An implementation of DogStatsD for collecting and pushing metrics homepage: https://github.com/iostat/statsdi#readme@@ -32,7 +32,7 @@ , ether , transformers , transformers-lift- , template-haskell >= 2.11.1.0 && < 2.12+ , template-haskell >= 2.11.1.0 && < 2.13 , unordered-containers >= 0.2.7.0 && < 0.3 , hashable >= 1.2.4.0 && < 1.3 default-language: Haskell2010