module Network.Monitoring.Riemann.TCPClient where

import           Network.Monitoring.Riemann.Client
import           Network.Monitoring.Riemann.TCP    as TCP
import           Network.Socket
import Data.Sequence as Seq

data TCPClient = TCPClient TCPConnection

{-|
    A new TCPClient

    The TCPClient is a 'Client' that will send single events synchronously over TCP.

    Current time and host name will be set if not provided.

    '''Note''': We never use IPv6 address resolved for given hostname.
-}
tcpClient :: HostName -> Port -> IO TCPClient
tcpClient h p = do
    c <- TCP.tcpConnection h p
    return $ TCPClient c

instance Client TCPClient where
    sendEvent (TCPClient connection) event =
        TCP.sendEvents connection $ Seq.singleton event
    close _ = print "close"