module Network.Metrics (
SinkType(..)
, open
, MetricSink(push, close)
, Group
, Bucket
, Value
, MetricType(..)
, Metric(..)
, Sink(..)
) where
import Data.Data (Data, Typeable)
import Network.Metrics.Internal
import qualified Network.Metrics.Ganglia as GA
import qualified Network.Metrics.Graphite as GR
import qualified Network.Metrics.Statsd as S
data SinkType =
Ganglia
| Graphite
| Statsd
| Stdout
deriving (Data, Typeable, Show)
data StdoutSink = StdoutSink
instance MetricSink StdoutSink where
push m _ = print m
close _ = return ()
open :: SinkType -> String -> String -> IO Sink
open = fn
where
fn Ganglia = GA.open
fn Graphite = GR.open
fn Statsd = S.open
fn Stdout = \_ _ -> return $ Sink StdoutSink