preamble 0.0.33 → 0.0.34
raw patch · 5 files changed
+20/−21 lines, 5 files
Files
- preamble.cabal +1/−1
- src/Preamble/Ctx.hs +4/−3
- src/Preamble/Stats.hs +6/−11
- src/Preamble/Types/Alias.hs +4/−0
- src/Preamble/Types/Ctx.hs +5/−6
preamble.cabal view
@@ -1,5 +1,5 @@ name: preamble-version: 0.0.33+version: 0.0.34 synopsis: Yet another prelude. description: A prelude built on basic-prelude. homepage: https://github.com/swift-nav/preamble
src/Preamble/Ctx.hs view
@@ -11,7 +11,8 @@ import Control.Monad.Logger import Control.Monad.Reader-import Network.Socket+import Network.Socket hiding (sendTo)+import Network.Socket.ByteString import Preamble.Prelude import Preamble.Trace import Preamble.Types@@ -45,8 +46,8 @@ s <- liftIO $ socket AF_INET Datagram defaultProtocol h <- liftIO $ fromMaybe "127.0.0.1" <$> lookupEnv "STATS_HOST" a <- liftIO $ inet_addr h- let sa = SockAddrInet 8125 a- runTransT (StatsCtx c s sa) action+ let stat m = void $ sendTo s m $ SockAddrInet 8125 a+ runTransT (StatsCtx c mempty stat) action -- | Update stats context's preamble. --
src/Preamble/Stats.hs view
@@ -14,21 +14,16 @@ , statsDecrement ) where -import Network.Socket.ByteString import Preamble.Prelude import Preamble.Types -sendto :: MonadStatsCtx c m => ByteString -> m ()-sendto metric = do- s <- view scSocket- a <- view scSockAddr- liftIO $ void $ sendTo s metric a- stats :: (MonadStatsCtx c m, Show a) => Text -> Text -> a -> Tags -> m ()-stats stat name value tags = do- let metric = name -:- show value -|- stat- tagged = intercalate "," $ flip map tags $ uncurry (-:-)- sendto $ encodeUtf8 $ bool (metric -|- "#" <> tagged) metric $ null tags+stats metric name value tags = do+ labels <- (<> tags) <$> view scLabels+ let statsd = name -:- show value -|- metric+ tagged = intercalate "," $ flip map labels $ uncurry (-:-)+ stat <- view scStat+ liftIO $ stat $ encodeUtf8 $ bool (statsd -|- "#" <> tagged) statsd $ null labels statsCount :: (MonadStatsCtx c m, Show a) => Text -> a -> Tags -> m () statsCount = stats "c"
src/Preamble/Types/Alias.hs view
@@ -28,6 +28,10 @@ -- type Logger = Loc -> LogSource -> LogLevel -> LogStr -> IO () +-- | Stat+--+type Stat = ByteString -> IO ()+ -- | MonadControl -- type MonadControl m =
src/Preamble/Types/Ctx.hs view
@@ -13,7 +13,6 @@ import Control.Monad.Logger import Control.Monad.Random import Control.Monad.Reader-import Network.Socket import Preamble.Lens import Preamble.Prelude import Preamble.Types.Alias@@ -46,12 +45,12 @@ -- Stats context. -- data StatsCtx = StatsCtx- { _scCtx :: Ctx+ { _scCtx :: Ctx -- ^ Parent environment.- , _scSocket :: Socket- -- ^ UDP Socket for statsd.- , _scSockAddr :: SockAddr- -- ^ UDP SockAddr for statsd.+ , _scLabels :: Tags+ -- ^ Tags to append to every stat.+ , _scStat :: Stat+ -- ^ Configurable stat function. } $(makeClassyConstraints ''StatsCtx [''HasCtx])