module Network.Metric.Sink.Stdout (
open
, Sink(..)
, Group
, Bucket
, Metric(..)
) where
import Network.Metric.Internal
import qualified Data.ByteString.Char8 as BS
data Stdout = Stdout Host deriving (Show)
instance Sink Stdout where
push (Stdout host) = mapM_ enc . measure
where
enc (Counter g b v) = put "Counter" host g b v
enc (Timer g b v) = put "Timer" host g b v
enc (Gauge g b v) = put "Gauge" host g b v
close _ = return ()
open :: Host -> HostName -> PortNumber -> IO AnySink
open host _ _ = return . AnySink $ Stdout host
put :: Encodable a => BS.ByteString -> Host -> Group -> Bucket -> a -> IO ()
put prefix host group bucket value = putStrLn s
where
s = BS.unpack $ BS.concat [prefix, ": ", key host group bucket, " ", encode value]