From 73705f713c9a8dd7e01b2f0c4bb6fadb01442652 Mon Sep 17 00:00:00 2001 From: nek0 Date: Sat, 9 Dec 2023 08:55:56 +0100 Subject: [PATCH] first experiments with socket --- src-server/Main.hs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src-server/Main.hs b/src-server/Main.hs index 43da76f..3fa8f58 100644 --- a/src-server/Main.hs +++ b/src-server/Main.hs @@ -12,6 +12,8 @@ import Data.Time import Data.Yaml +import Network.Socket + import Options.Applicative -- internal imports @@ -34,6 +36,20 @@ main = do fromString (prettyPrintParseException msg) ) Right (Settings {..}) -> do + let sockAddr = SockAddrUnix setSocketPath + unless (isSupportedSockAddr sockAddr) + (error $ "invalid socket path " <> setSocketPath) + let hints = defaultHints + { addrFamily = AF_UNIX + , addrSocketType = Stream + , addrAddress = sockAddr + } + addr <- head <$> getAddrInfo (Just hints) Nothing Nothing + sock <- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr) + bind sock (addrAddress addr) + putStrLn "Bound to socket:" + print =<< getSocketName sock + putStrLn "-----------------------------------------------------------------------------------" arena <- generateArena setMapRows setMapColumns setSpawnerProbability putStrLn "generated arena:" print (arenaMap arena)