gameServer/hedgewars-server.hs
author nemo
Fri, 20 Nov 2009 21:30:10 +0000
changeset 2631 163b0128bd21
parent 2349 ba7a0813c532
child 2867 9be6693c78cb
permissions -rw-r--r--
A rather tedious rename of "Please," to "Please" triggered by bruce89 in interests of proper grammar. Also updated lrelease-qt4 which should pick up artart78's prior hedgewars_fr.ts fixes. Also a couple of typos in en.txt / fi.txt / pl.txt

{-# LANGUAGE CPP, ScopedTypeVariables #-}

module Main where

import Network.Socket
import qualified Network
import Control.Concurrent.STM
import Control.Concurrent.Chan
#if defined(NEW_EXCEPTIONS)
import qualified Control.OldException as Exception
#else
import qualified Control.Exception as Exception
#endif
import System.Log.Logger
-----------------------------------
import Opts
import CoreTypes
import OfficialServer.DBInteraction
import ServerCore
import Utils


#if !defined(mingw32_HOST_OS)
import System.Posix
#endif


setupLoggers =
	updateGlobalLogger "Clients"
		(setLevel INFO)

main = withSocketsDo $ do
#if !defined(mingw32_HOST_OS)
	installHandler sigPIPE Ignore Nothing;
	installHandler sigCHLD Ignore Nothing;
#endif

	setupLoggers

	stats <- atomically $ newTMVar (StatisticsInfo 0 0)
	dbQueriesChan <- newChan
	coreChan <- newChan
	serverInfo' <- getOpts $ newServerInfo stats coreChan dbQueriesChan
	
#if defined(OFFICIAL_SERVER)
	dbHost' <- askFromConsole "DB host: "
	dbLogin' <- askFromConsole "login: "
	dbPassword' <- askFromConsole "password: "
	let serverInfo = serverInfo'{dbHost = dbHost', dbLogin = dbLogin', dbPassword = dbPassword'}
#else
	let serverInfo = serverInfo'
#endif

	Exception.bracket
		(Network.listenOn $ Network.PortNumber $ listenPort serverInfo)
		sClose
		(startServer serverInfo)