1 {-# LANGUAGE RecordWildCards #-}
17 import Data.Text (Text)
18 import qualified Data.Text as T
26 { _graylogHost :: String
27 , _graylogPort :: String
28 , _graylogAddress :: AddrInfo
29 , _graylogSocket :: Socket
30 , _graylogHostName :: Text
31 , _graylogChunkSize :: ChunkSize
34 defaultChunkSize :: ChunkSize
35 defaultChunkSize = 8192
37 openGraylog :: HostName -> ServiceName -> ChunkSize -> IO (Either String Graylog)
38 openGraylog host port chksize = do
39 infos <- getAddrInfo Nothing (Just host) (Just port)
41 [] -> return $ Left "No address info found."
43 sock <- socket (addrFamily info) Datagram defaultProtocol
44 connect sock (addrAddress info)
45 hostname <- getHostName
46 return $ Right $ Graylog host port info sock (T.pack hostname) chksize
47 _ -> return $ Left "Too many address infos found."
49 closeGraylog :: Graylog -> IO ()
50 closeGraylog Graylog{..} = close _graylogSocket