# HG changeset patch # User unc0rr # Date 1273430851 0 # Node ID 8c04583d8e2a7d158ced03d0bc97a43bdfdcefe6 # Parent 62089ccec75c4732423553aa3f7a8411c75d061d - Enable -O2 optimization for server - Disconnect client from server diff -r 62089ccec75c -r 8c04583d8e2a gameServer/Actions.hs --- 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) {- diff -r 62089ccec75c -r 8c04583d8e2a gameServer/CMakeLists.txt --- 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}")