Adds Encode instance for sample value
parent
f5036f0d58
commit
7208342f77
|
@ -28,6 +28,8 @@ import Control.Monad.Eff (Eff)
|
|||
import Control.Monad.Eff.Class (liftEff)
|
||||
import Control.Monad.Eff.Exception (EXCEPTION, throw)
|
||||
import Control.Monad.Eff.Ref (REF, Ref, modifyRef', newRef, readRef)
|
||||
import Data.Foreign.Class (class Encode)
|
||||
import Data.Foreign.Generic (defaultOptions, genericEncode)
|
||||
import Data.Generic.Rep (class Generic)
|
||||
import Data.Generic.Rep.Show (genericShow)
|
||||
import Data.Map as Map
|
||||
|
@ -185,6 +187,8 @@ derive instance eqVal :: Eq Value
|
|||
derive instance genVal :: Generic Value _
|
||||
instance showVal :: Show Value where
|
||||
show = genericShow
|
||||
instance encodeVal :: Encode Value where
|
||||
encode = genericEncode $ defaultOptions { unwrapSingleConstructors = true }
|
||||
|
||||
sampleOne :: forall eff. MetricSampler -> Aff (ref :: REF | eff) Value
|
||||
sampleOne (CounterS c) = CounterV <$> liftEff (Counter.read c)
|
||||
|
|
|
@ -16,15 +16,19 @@ module System.Metrics.Histogram
|
|||
, read
|
||||
) where
|
||||
|
||||
import Prelude
|
||||
|
||||
import Control.Monad.Eff (Eff)
|
||||
import Control.Monad.Eff.Ref (REF)
|
||||
import Data.Array (index)
|
||||
import Data.Foreign.Class (class Encode, encode)
|
||||
import Data.Foreign.Generic (defaultOptions, genericEncode)
|
||||
import Data.Foreign.NullOrUndefined (NullOrUndefined(..))
|
||||
import Data.Function.Uncurried (Fn2, runFn2)
|
||||
import Data.Generic.Rep (class Generic)
|
||||
import Data.Generic.Rep.Show (genericShow)
|
||||
import Data.Maybe (Maybe)
|
||||
import Data.Nullable (Nullable, toMaybe)
|
||||
import Prelude
|
||||
|
||||
foreign import data Histogram :: Type
|
||||
foreign import _newWithExponentialDecaySampling ::
|
||||
|
@ -85,10 +89,46 @@ newtype Summary = Summary {
|
|||
, p999 :: Maybe Number
|
||||
}
|
||||
|
||||
derive instance eqSummary :: Eq Summary
|
||||
derive instance genericSummary :: Generic Summary _
|
||||
instance showSummary :: Show Summary where
|
||||
derive instance eqHSummary :: Eq Summary
|
||||
derive instance genericHSummary :: Generic Summary _
|
||||
instance showHSummary :: Show Summary where
|
||||
show = genericShow
|
||||
instance encodeHSummary :: Encode Summary where
|
||||
encode = fromSummary >>> encode
|
||||
|
||||
newtype Summary' = Summary' {
|
||||
min :: NullOrUndefined Number
|
||||
, max :: NullOrUndefined Number
|
||||
, sum :: NullOrUndefined Number
|
||||
, variance :: NullOrUndefined Number
|
||||
, mean :: NullOrUndefined Number
|
||||
, stdDev :: NullOrUndefined Number
|
||||
, count :: Int
|
||||
, median :: NullOrUndefined Number
|
||||
, p75 :: NullOrUndefined Number
|
||||
, p95 :: NullOrUndefined Number
|
||||
, p99 :: NullOrUndefined Number
|
||||
, p999 :: NullOrUndefined Number
|
||||
}
|
||||
|
||||
fromSummary :: Summary -> Summary'
|
||||
fromSummary (Summary { min , max , sum , variance , mean , stdDev , count , median , p75 , p95 , p99 , p999 }) =
|
||||
Summary' { min: NullOrUndefined min
|
||||
, max: NullOrUndefined max
|
||||
, sum: NullOrUndefined sum
|
||||
, variance: NullOrUndefined variance
|
||||
, mean: NullOrUndefined mean
|
||||
, stdDev: NullOrUndefined stdDev
|
||||
, count: count
|
||||
, median: NullOrUndefined median
|
||||
, p75: NullOrUndefined p75
|
||||
, p95: NullOrUndefined p95
|
||||
, p99: NullOrUndefined p99
|
||||
, p999: NullOrUndefined p999 }
|
||||
|
||||
derive instance genericHSummary' :: Generic Summary' _
|
||||
instance encodeHSummary' :: Encode Summary' where
|
||||
encode = genericEncode $ defaultOptions { unwrapSingleConstructors = true }
|
||||
|
||||
read :: forall eff. Histogram -> Eff (ref :: REF | eff) Summary
|
||||
read h = do
|
||||
|
|
|
@ -14,10 +14,12 @@ module System.Metrics.Meter
|
|||
|
||||
import Control.Monad.Eff (Eff)
|
||||
import Control.Monad.Eff.Ref (REF)
|
||||
import Data.Foreign.Class (class Encode)
|
||||
import Data.Foreign.Generic (defaultOptions, genericEncode)
|
||||
import Data.Function.Uncurried (Fn2, runFn2)
|
||||
import Data.Generic.Rep (class Generic)
|
||||
import Data.Generic.Rep.Show (genericShow)
|
||||
import Prelude (class Eq, class Show, Unit, (<$>), (<*>))
|
||||
import Prelude
|
||||
|
||||
foreign import data Meter :: Type
|
||||
foreign import _new :: forall eff. Eff (ref :: REF | eff) Meter
|
||||
|
@ -45,10 +47,12 @@ newtype Summary = Summary {
|
|||
, mean :: Number
|
||||
}
|
||||
|
||||
derive instance eqSummary :: Eq Summary
|
||||
derive instance genericSummary :: Generic Summary _
|
||||
instance showSummary :: Show Summary where
|
||||
derive instance eqMSummary :: Eq Summary
|
||||
derive instance genericMSummary :: Generic Summary _
|
||||
instance showMSummary :: Show Summary where
|
||||
show = genericShow
|
||||
instance encodeMSummary :: Encode Summary where
|
||||
encode = genericEncode $ defaultOptions { unwrapSingleConstructors = true }
|
||||
|
||||
read :: forall eff. Meter -> Eff (ref :: REF | eff) Summary
|
||||
read m = Summary <$> ({ count: _
|
||||
|
|
|
@ -27,6 +27,8 @@ import Control.Monad.Eff.Class (liftEff)
|
|||
import Control.Monad.Eff.Now (NOW, now)
|
||||
import Control.Monad.Eff.Ref (REF)
|
||||
import Data.DateTime.Instant (unInstant)
|
||||
import Data.Foreign.Class (class Encode)
|
||||
import Data.Foreign.Generic (defaultOptions, genericEncode)
|
||||
import Data.Generic.Rep (class Generic)
|
||||
import Data.Generic.Rep.Show (genericShow)
|
||||
import Data.Maybe (Maybe)
|
||||
|
@ -95,10 +97,12 @@ count (Timer { histogram }) = Histogram.count histogram
|
|||
|
||||
newtype Summary = Summary { duration :: Histogram.Summary, rate :: Meter.Summary }
|
||||
|
||||
derive instance eqSummary :: Eq Summary
|
||||
derive instance genericSummary :: Generic Summary _
|
||||
instance showSummary :: Show Summary where
|
||||
derive instance eqTSummary :: Eq Summary
|
||||
derive instance genericTSummary :: Generic Summary _
|
||||
instance showTSummary :: Show Summary where
|
||||
show = genericShow
|
||||
instance encodeTSummary :: Encode Summary where
|
||||
encode = genericEncode $ defaultOptions { unwrapSingleConstructors = true }
|
||||
|
||||
read :: forall eff. Timer -> Eff (ref :: REF | eff) Summary
|
||||
read (Timer { meter, histogram }) =
|
||||
|
|
Loading…
Reference in New Issue