aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Graylog/Types.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Graylog/Types.hs')
-rw-r--r--src/Graylog/Types.hs27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/Graylog/Types.hs b/src/Graylog/Types.hs
index bfee38a..8fad8cc 100644
--- a/src/Graylog/Types.hs
+++ b/src/Graylog/Types.hs
@@ -1,3 +1,4 @@
1{-# LANGUAGE LambdaCase #-}
1{-# LANGUAGE RecordWildCards #-} 2{-# LANGUAGE RecordWildCards #-}
2 3
3module Graylog.Types 4module Graylog.Types
@@ -14,6 +15,7 @@ module Graylog.Types
14 , closeGraylog 15 , closeGraylog
15 ) where 16 ) where
16 17
18import Data.List
17import Data.Text (Text) 19import Data.Text (Text)
18import qualified Data.Text as T 20import qualified Data.Text as T
19import Network.BSD 21import Network.BSD
@@ -34,19 +36,18 @@ data Graylog
34defaultChunkSize :: ChunkSize 36defaultChunkSize :: ChunkSize
35defaultChunkSize = 8192 37defaultChunkSize = 8192
36 38
37openGraylog :: HostName -> ServiceName -> ChunkSize -> IO (Either String Graylog) 39openGraylog
38openGraylog host port chksize = do 40 :: HostName -> ServiceName -> ChunkSize -> IO (Either String Graylog)
39 infos <- getAddrInfo Nothing (Just host) (Just port) 41openGraylog h p cksize = getAddrInfo Nothing (Just h) (Just p) >>= \case
40 case infos of 42 [] -> return $ Left "No address info found."
41 [] -> return $ Left "No address info found." 43 infos ->
42 [info] -> do 44 case find (\i -> addrSocketType i == Datagram) infos of
43 sock <- socket (addrFamily info) Datagram defaultProtocol 45 Nothing -> return $ Left "No datagram info found for address."
44 connect sock (addrAddress info) 46 Just i -> do
45 hostname <- getHostName 47 sock <- socket (addrFamily i) Datagram defaultProtocol
46 return $ Right $ Graylog host port info sock (T.pack hostname) chksize 48 connect sock (addrAddress i)
47 _ -> return $ Left "Too many address infos found." 49 hostname <- getHostName
50 return $ Right $ Graylog h p i sock (T.pack hostname) cksize
48 51
49closeGraylog :: Graylog -> IO () 52closeGraylog :: Graylog -> IO ()
50closeGraylog Graylog{..} = close _graylogSocket 53closeGraylog Graylog{..} = close _graylogSocket
51
52