1 {-# LANGUAGE RecordWildCards #-}
13 import Data.Text (Text)
14 import qualified Data.Text as T
20 { _graylogHost :: String
21 , _graylogPort :: String
22 , _graylogAddress :: AddrInfo
23 , _graylogSocket :: Socket
24 , _graylogHostName :: Text
27 openGraylog :: HostName -> ServiceName -> IO (Either String Graylog)
28 openGraylog host port = do
29 infos <- getAddrInfo Nothing (Just host) (Just port)
31 [] -> return $ Left "No address info found."
33 sock <- socket (addrFamily info) Datagram defaultProtocol
34 connect sock (addrAddress info)
35 hostname <- getHostName
36 return $ Right $ Graylog host port info sock (T.pack hostname)
37 _ -> return $ Left "Too many address infos found."
39 closeGraylog :: Graylog -> IO ()
40 closeGraylog Graylog{..} = close _graylogSocket