apiary-helics 1.1.2 → 1.1.3
raw patch · 2 files changed
+19/−2 lines, 2 filesdep +text
Dependencies added: text
Files
- apiary-helics.cabal +2/−1
- src/Web/Apiary/Helics.hs +17/−1
apiary-helics.cabal view
@@ -1,5 +1,5 @@ name: apiary-helics-version: 1.1.2+version: 1.1.3 synopsis: helics support for apiary web framework. description: helics support for apiary web framework. license: MIT@@ -27,6 +27,7 @@ , monad-control >=0.3 && <0.4 , wai >=3.0 && <3.1 , bytestring >=0.10 && <0.11+ , text >=1.1 && <1.2 , data-default-class >=0.0 && <0.1 hs-source-dirs: src
src/Web/Apiary/Helics.hs view
@@ -1,4 +1,7 @@ {-# LANGUAGE Rank2Types #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE NoMonomorphismRestriction #-} @@ -7,6 +10,7 @@ -- * initializer , HelicsConfig(..) , initHelics+ , initHerokuHelics -- * action -- ** raw , transactionId@@ -43,9 +47,11 @@ import Data.Apiary.Compat import Data.Apiary.Extension+import Web.Apiary.Heroku import Data.Default.Class import qualified Data.Vault.Lazy as V import qualified Data.ByteString as S+import qualified Data.Text.Encoding as T data Helics = Helics (V.Key H.TransactionId) ThreadId HelicsConfig @@ -95,10 +101,20 @@ initHelics :: (MonadBaseControl IO m, MonadIO m) => HelicsConfig -> Initializer' m Helics initHelics cnf = initializerBracket' $ \m -> do- k <- liftIO $ V.newKey+ k <- liftIO V.newKey control $ \run -> H.withHelics (toHelicsConfig cnf) $ run $ do tid <- liftIO $ forkIO $ H.sampler (samplerFrequency cnf) m (Helics k tid cnf)++initHerokuHelics :: (MonadBaseControl IO m, MonadIO m, Has Heroku exts)+ => HelicsConfig -> Initializer m exts (Helics ': exts)+initHerokuHelics cnf = initializerBracket $ \exts m -> do+ k <- liftIO V.newKey+ cnf' <- maybe cnf (\key -> cnf { licenseKey = T.encodeUtf8 key } )+ <$> liftIO (getHerokuEnv "NEW_RELIC_LICENSE_KEY" exts)+ control $ \run -> H.withHelics (toHelicsConfig cnf') $ run $ do+ tid <- liftIO $ forkIO $ H.sampler (samplerFrequency cnf')+ m (Helics k tid cnf') recordMetric :: MonadIO m => S.ByteString -> Double -> ActionT exts prms m ()