- Enable -O2 optimization for server
authorunc0rr
Sun, 09 May 2010 18:47:31 +0000
changeset 3452 8c04583d8e2a
parent 3451 62089ccec75c
child 3453 d65657c94bb9
- Enable -O2 optimization for server - Disconnect client from server
gameServer/Actions.hs
gameServer/CMakeLists.txt
--- a/gameServer/Actions.hs	Sun May 09 17:53:08 2010 +0000
+++ b/gameServer/Actions.hs	Sun May 09 18:47:31 2010 +0000
@@ -114,16 +114,18 @@
     liftIO $ do
         infoM "Clients" (show ci ++ " quits: " ++ msg)
 
-        ri <- clientRoomM rnc ci
+        chan <- withRoomsAndClients rnc (getChan ci)
 
         --mapM_ (processAction (ci, serverInfo, rnc)) $ answerOthersQuit ++ answerInformRoom
-        --writeChan (sendChan $ clients ! clID) ["BYE", msg]
+        writeChan chan ["BYE", msg]
         modifyRoom rnc (\r -> r{
                         --playersIDs = IntSet.delete ci (playersIDs r)
                         playersIn = (playersIn r) - 1
                         --readyPlayers = if isReady client then readyPlayers r - 1 else readyPlayers r
                         }) ri
         removeClient rnc ci
+    where
+        getChan ci irnc = let cl = irnc `client` ci in (sendChan cl)
 
     
 {-
--- a/gameServer/CMakeLists.txt	Sun May 09 17:53:08 2010 +0000
+++ b/gameServer/CMakeLists.txt	Sun May 09 18:47:31 2010 +0000
@@ -1,43 +1,44 @@
 find_program(ghc_executable ghc)
 
 if(NOT ghc_executable)
-	message(FATAL_ERROR "Cannot find GHC")
+    message(FATAL_ERROR "Cannot find GHC")
 endif(NOT ghc_executable)
 
 
 set(hwserver_sources
-	OfficialServer/DBInteraction.hs
-	Actions.hs
-	ClientIO.hs
-	CoreTypes.hs
-	HWProtoCore.hs
-	HWProtoInRoomState.hs
-	HWProtoLobbyState.hs
-	HWProtoNEState.hs
-	NetRoutines.hs
-	Opts.hs
-	ServerCore.hs
-	Utils.hs
-	hedgewars-server.hs
-	)
+    OfficialServer/DBInteraction.hs
+    Actions.hs
+    ClientIO.hs
+    CoreTypes.hs
+    HWProtoCore.hs
+    HWProtoInRoomState.hs
+    HWProtoLobbyState.hs
+    HWProtoNEState.hs
+    NetRoutines.hs
+    Opts.hs
+    ServerCore.hs
+    Utils.hs
+    hedgewars-server.hs
+    )
 
 set(hwserv_main ${hedgewars_SOURCE_DIR}/gameServer/hedgewars-server.hs)
 
 set(ghc_flags
-	--make ${hwserv_main}
-	-i${hedgewars_SOURCE_DIR}/gameServer
-	-o ${EXECUTABLE_OUTPUT_PATH}/hedgewars-server${CMAKE_EXECUTABLE_SUFFIX}
-	-odir ${CMAKE_CURRENT_BINARY_DIR}
-	-hidir ${CMAKE_CURRENT_BINARY_DIR})
+    -O2
+    --make ${hwserv_main}
+    -i${hedgewars_SOURCE_DIR}/gameServer
+    -o ${EXECUTABLE_OUTPUT_PATH}/hedgewars-server${CMAKE_EXECUTABLE_SUFFIX}
+    -odir ${CMAKE_CURRENT_BINARY_DIR}
+    -hidir ${CMAKE_CURRENT_BINARY_DIR})
 
 set(ghc_flags ${haskell_compiler_flags_cmn} ${ghc_flags})
 
 add_custom_command(OUTPUT "${EXECUTABLE_OUTPUT_PATH}/hedgewars-server${CMAKE_EXECUTABLE_SUFFIX}"
-		COMMAND "${ghc_executable}"
-		ARGS ${ghc_flags}
-		MAIN_DEPENDENCY ${hwserv_main}
-		DEPENDS ${hwserver_sources}
-		)
+        COMMAND "${ghc_executable}"
+        ARGS ${ghc_flags}
+        MAIN_DEPENDENCY ${hwserv_main}
+        DEPENDS ${hwserver_sources}
+        )
 
 add_custom_target(hedgewars-server ALL DEPENDS "${EXECUTABLE_OUTPUT_PATH}/hedgewars-server${CMAKE_EXECUTABLE_SUFFIX}")