module Hails.Network where
import Data.List
import Data.ReactiveValue
import Network.BSD
import Network.Socket
udpSink :: HostName -> String -> IO (ReactiveFieldWrite IO String)
udpSink hostname port = do
addrinfos <- getAddrInfo Nothing (Just hostname) (Just port)
let serveraddr = head addrinfos
sock <- socket (addrFamily serveraddr) Datagram defaultProtocol
let sendstr :: String -> IO ()
sendstr [] = return ()
sendstr omsg = do sent <- sendTo sock omsg (addrAddress serveraddr)
sendstr (genericDrop sent omsg)
return $ ReactiveFieldWrite sendstr