gameServer/hedgewars-server.hs
author unc0rr
Fri, 27 Mar 2009 20:29:38 +0000
changeset 1927 e2031906a347
parent 1839 5dd4cb7fd7e5
child 1964 dc9ea05c9d2f
permissions -rw-r--r--
Ping clients every 30 seconds. Disconnection due to ping timeout to be implemented.

{-# LANGUAGE CPP, ScopedTypeVariables, PatternSignatures #-}

module Main where

import Network.Socket
import qualified Network
import Control.Concurrent.STM
import Control.Concurrent.Chan
import Control.Exception
import System.Log.Logger
-----------------------------------
import Opts
import CoreTypes
import OfficialServer.DBInteraction
import ServerCore


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


setupLoggers =
	updateGlobalLogger "Clients"
		(setLevel DEBUG)

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

	setupLoggers

	stats <- atomically $ newTMVar (StatisticsInfo 0 0)
	dbQueriesChan <- newChan
	coreChan <- newChan
	serverInfo <- getOpts $ newServerInfo stats coreChan dbQueriesChan
	
	bracket
		(Network.listenOn $ Network.PortNumber $ listenPort serverInfo)
		(sClose)
		(startServer serverInfo)