helics 0.3.0 → 0.4.0
raw patch · 7 files changed
+106/−80 lines, 7 filesdep ~base
Dependency ranges changed: base
Files
- common/Network/Helics/Internal/Types.hs +83/−0
- common/Network/Helics/Types.hs +0/−72
- dummy/Network/Helics.hs +17/−2
- helics.cabal +3/−3
- src/Network/Helics/Foreign/Client.hsc +1/−1
- src/Network/Helics/Foreign/Common.hsc +1/−1
- src/Network/Helics/Foreign/Transaction.hsc +1/−1
+ common/Network/Helics/Internal/Types.hs view
@@ -0,0 +1,83 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE CPP #-}++module Network.Helics.Internal.Types where++import Control.Exception++import Foreign.C.Types+import Foreign.C.String++import Data.IORef+import Data.Typeable+import Data.Default.Class+import qualified Data.ByteString as S++-- common+newtype ReturnCode = ReturnCode CInt deriving (Eq, Typeable, Show)+instance Exception ReturnCode++-- client+type StatusCallback = CInt -> IO ()+newtype StatusCode = StatusCode CInt deriving (Eq, Show)++-- transaction+data TransactionError = TransactionError+ { exceptionType :: S.ByteString+ , errorMessage :: S.ByteString+ , stackTrace :: S.ByteString+ , stackFrameDelimiter :: S.ByteString+ }++data TransactionId = TransactionId+ { rawTransactionId :: CLong+ , transactionError :: IORef (Maybe TransactionError)+ }++newtype SegmentId = SegmentId CLong+type SqlObfuscator = CString -> IO CString++-- main+data HelicsConfig = HelicsConfig+ { licenseKey :: S.ByteString+ , appName :: S.ByteString+ , language :: S.ByteString+ , languageVersion :: S.ByteString+ , statusCallback :: Maybe (StatusCode -> IO ())+ }++instance Default HelicsConfig where+ def = HelicsConfig+ (error "license key is not set.")+ "App"+ "Haskell"+ COMPILER_VERSION+ Nothing++data TransactionType+ = Default+ | Web S.ByteString+ | Other S.ByteString++instance Default TransactionType where+ def = Default++data Operation+ = SELECT+ | INSERT+ | UPDATE+ | DELETE+ deriving (Show)++data DatastoreSegment = DatastoreSegment+ { table :: S.ByteString+ , operation :: Operation+ , sql :: S.ByteString+ , sqlTraceRollupName :: S.ByteString+ , sqlObFuscator :: Maybe (S.ByteString -> S.ByteString)+ }+instance Default DatastoreSegment where+ def = DatastoreSegment "unknown" SELECT "" "unknown" Nothing++
− common/Network/Helics/Types.hs
@@ -1,72 +0,0 @@-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE CPP #-}--module Network.Helics.Types where--import Control.Exception--import Foreign.C.Types-import Foreign.C.String--import Data.Typeable-import Data.Default.Class-import qualified Data.ByteString as S---- common-newtype ReturnCode = ReturnCode CInt deriving (Eq, Typeable, Show)-instance Exception ReturnCode---- client-type StatusCallback = CInt -> IO ()-newtype StatusCode = StatusCode CInt deriving (Eq, Show)---- transaction-newtype TransactionId = TransactionId CLong--newtype SegmentId = SegmentId CLong-type SqlObfuscator = CString -> IO CString---- main-data HelicsConfig = HelicsConfig- { licenseKey :: S.ByteString- , appName :: S.ByteString- , language :: S.ByteString- , languageVersion :: S.ByteString- , statusCallback :: Maybe (StatusCode -> IO ())- }--instance Default HelicsConfig where- def = HelicsConfig- (error "license key is not set.")- "App"- "Haskell"- COMPILER_VERSION- Nothing--data TransactionType- = Default- | Web S.ByteString- | Other S.ByteString--instance Default TransactionType where- def = Default--data Operation- = SELECT- | INSERT- | UPDATE- | DELETE- deriving (Show)--data DatastoreSegment = DatastoreSegment- { table :: S.ByteString- , operation :: Operation- , sql :: S.ByteString- , sqlTraceRollupName :: S.ByteString- , sqlObFuscator :: Maybe (S.ByteString -> S.ByteString)- }-instance Default DatastoreSegment where- def = DatastoreSegment "unknown" SELECT "" "unknown" Nothing--
dummy/Network/Helics.hs view
@@ -17,6 +17,9 @@ , addAttribute , setRequestUrl , setMaxTraceSegments+ , setError+ , noticeError+ , clearError -- * segment , SegmentId , autoScope@@ -47,12 +50,13 @@ import Foreign.Marshal import Foreign.Storable +import Data.IORef import Data.Word import Data.Default.Class import qualified Data.ByteString as S import qualified Network.Helics.Sampler as Sampler-import Network.Helics.Types+import Network.Helics.Internal.Types autoScope, rootSegment :: SegmentId autoScope = SegmentId 0@@ -88,7 +92,9 @@ withTransaction :: S.ByteString -- ^ name of transaction -> TransactionType -> (TransactionId -> IO c) -> IO c-withTransaction _ _ m = m (TransactionId 0)+withTransaction _ _ m = do+ ref <- newIORef Nothing+ m (TransactionId 0 ref) genericSegment :: SegmentId -- ^ parent segment id -> S.ByteString -- ^ name of represent segment@@ -114,3 +120,12 @@ setMaxTraceSegments :: Int -> TransactionId -> IO () setMaxTraceSegments _ _ = return ()++setError :: Maybe TransactionError -> TransactionId -> IO ()+setError _ _ = return ()++noticeError :: TransactionError -> TransactionId -> IO ()+noticeError _ _ = return ()++clearError :: TransactionId -> IO ()+clearError _ = return ()
helics.cabal view
@@ -1,5 +1,5 @@ name: helics-version: 0.3.0+version: 0.4.0 synopsis: New Relic® agent SDK wrapper for Haskell. description: New Relic® agent SDK wrapper for Haskell.@@ -35,7 +35,7 @@ library exposed-modules: Network.Helics Network.Helics.Sampler- other-modules: Network.Helics.Types+ Network.Helics.Internal.Types ghc-options: -Wall -O2 default-language: Haskell2010 build-depends: base >=4.6 && <4.8@@ -61,7 +61,7 @@ executable helics-example main-is: example.hs if flag(example)- build-depends: base >=4.6 && <4.8+ build-depends: base , helics , bytestring buildable: True
src/Network/Helics/Foreign/Client.hsc view
@@ -6,7 +6,7 @@ import Foreign.C import Foreign.Ptr-import Network.Helics.Types+import Network.Helics.Internal.Types #{enum StatusCode, StatusCode , statusShutdown = NEWRELIC_STATUS_CODE_SHUTDOWN
src/Network/Helics/Foreign/Common.hsc view
@@ -7,7 +7,7 @@ import Foreign.C import Foreign.Ptr-import Network.Helics.Types+import Network.Helics.Internal.Types #{enum ReturnCode, ReturnCode , returnCodeOk = NEWRELIC_RETURN_CODE_OK
src/Network/Helics/Foreign/Transaction.hsc view
@@ -8,7 +8,7 @@ import Foreign.C import Foreign.Ptr import qualified Data.ByteString as S-import Network.Helics.Types+import Network.Helics.Internal.Types autoScope, rootSegment :: SegmentId autoScope = SegmentId #const NEWRELIC_AUTOSCOPE