module Network.Metric (
SinkType(..)
, Group
, Bucket
, Metric(..)
, Measurable(..)
, Encodable(..)
, Sink(..)
, AnyMeasurable(..)
, AnySink(..)
, open
) where
import Data.Data (Data, Typeable)
import Network.Metric.Internal
import qualified Network.Metric.Sink.Ganglia as GangliaSink
import qualified Network.Metric.Sink.Graphite as GraphiteSink
import qualified Network.Metric.Sink.Statsd as StatsdSink
import qualified Network.Metric.Sink.Handle as H
data SinkType =
Ganglia
| Graphite
| Statsd
| Stdout
deriving (Eq, Data, Typeable, Read, Show)
open :: SinkType -> Host -> HostName -> PortNumber -> IO AnySink
open Ganglia = GangliaSink.open
open Graphite = GraphiteSink.open
open Statsd = StatsdSink.open
open Stdout = \h _ _ -> return . AnySink $ H.SinkHandle h putStrLn