on master help sign in
switch default websocket server port to 8000
commitc8ffbf4e5fd0302cb5a0ada26f4623502d960d89 authorAgentM <agentm@themactionfaction.com> dateFri 3 Feb 2017, 17:01 (10 years ago) parentf8121f5
2 files changed+25−15
src/bin/ProjectM36/Server/WebSocket/websocket-server.hs+3−2 src/lib/ProjectM36/Server/ParseArgs.hs+22−13
src/bin/ProjectM36/Server/WebSocket/websocket-server.hs+3−2
@@ -5,18 +5,19 @@ import ProjectM36.Server
55import Control.Concurrent
66import qualified Network.WebSockets as WS
77import Network.Transport.TCP (decodeEndPointAddress)
8+import Control.Exception
89
910main :: IO ()
1011main = do
1112 -- launch normal project-m36-server
1213 addressMVar <- newEmptyMVar
13− serverConfig <- parseConfig
14+ serverConfig <- parseConfigWithDefaults (defaultServerConfig { bindPort = 8000 })
1415 --usurp the serverConfig for our websocket server and make the proxied server run locally
1516 let wsHost = bindHost serverConfig
1617 wsPort = bindPort serverConfig
1718 serverHost = "127.0.0.1"
1819 serverConfig' = serverConfig {bindPort = 0, bindHost = serverHost}
19− _ <- forkFinally (launchServer serverConfig' (Just addressMVar)) failureHandler
20+ _ <- forkFinally (launchServer serverConfig' (Just addressMVar) >> pure ()) (either throwIO pure)
2021 --wait for server to be listening
2122 address <- takeMVar addressMVar
2223 let Just (_, serverPort, _) = decodeEndPointAddress address
src/lib/ProjectM36/Server/ParseArgs.hs+22−13
@@ -5,9 +5,16 @@ import Options.Applicative
55import ProjectM36.Server.Config
66import Data.Monoid
77
8−parseArgs :: Parser ServerConfig
9−parseArgs = ServerConfig <$> parsePersistenceStrategy <*> parseDatabaseName <*> parseHostname <*> parsePort <*> many parseGhcPkgPaths <*> parseTimeout <*> pure False
10−
8+parseArgsWithDefaults :: ServerConfig -> Parser ServerConfig
9+parseArgsWithDefaults defaults = ServerConfig <$>
10+ parsePersistenceStrategy <*>
11+ parseDatabaseName <*>
12+ parseHostname (bindHost defaults) <*>
13+ parsePort (bindPort defaults) <*>
14+ many parseGhcPkgPaths <*>
15+ parseTimeout (perRequestTimeout defaults) <*>
16+ pure False
17+
1118parsePersistenceStrategy :: Parser PersistenceStrategy
1219parsePersistenceStrategy = CrashSafePersistence <$> (dbdirOpt <* fsyncOpt) <|>
1320 MinimalPersistence <$> dbdirOpt <|>
@@ -27,27 +34,29 @@ parseDatabaseName = strOption (short 'n' <>
2734 long "database" <>
2835 metavar "DATABASE_NAME")
2936
30−parseHostname :: Parser Hostname
31−parseHostname = strOption (short 'h' <>
37+parseHostname :: Hostname -> Parser Hostname
38+parseHostname defHostname = strOption (short 'h' <>
3239 long "hostname" <>
3340 metavar "HOST_NAME" <>
34− value (bindHost defaultServerConfig))
41+ value defHostname)
3542
36−parsePort :: Parser Port
37−parsePort = option auto (short 'p' <>
43+parsePort :: Port -> Parser Port
44+parsePort defPort = option auto (short 'p' <>
3845 long "port" <>
3946 metavar "PORT_NUMBER" <>
40− value (bindPort defaultServerConfig))
47+ value defPort)
4148
4249parseGhcPkgPaths :: Parser String
4350parseGhcPkgPaths = strOption (long "ghc-pkg-dir" <>
4451 metavar "GHC_PACKAGE_DIRECTORY")
4552
46−parseTimeout :: Parser Int
47−parseTimeout = option auto (long "timeout" <>
53+parseTimeout :: Int -> Parser Int
54+parseTimeout defTimeout = option auto (long "timeout" <>
4855 metavar "MICROSECONDS" <>
49− value (perRequestTimeout defaultServerConfig))
56+ value defTimeout)
5057
5158parseConfig :: IO ServerConfig
52−parseConfig = execParser $ info parseArgs idm
59+parseConfig = parseConfigWithDefaults defaultServerConfig
5360
61+parseConfigWithDefaults :: ServerConfig -> IO ServerConfig
62+parseConfigWithDefaults defaults = execParser (info (parseArgsWithDefaults defaults) idm)