# HG changeset patch # User unc0rr # Date 1360527555 -14400 # Node ID c5605c6f5bb3df5e6598c64c9d832fab240fc61f # Parent a06b1598c3a27c86868683c0a4989f6071064476 Hack checker to run engine with record file received (uses hardcoded paths) diff -r a06b1598c3a2 -r c5605c6f5bb3 gameServer/OfficialServer/checker.hs --- a/gameServer/OfficialServer/checker.hs Mon Feb 11 00:14:05 2013 +0400 +++ b/gameServer/OfficialServer/checker.hs Mon Feb 11 00:19:15 2013 +0400 @@ -15,6 +15,10 @@ import Network.Socket hiding (recv) import Network.Socket.ByteString import qualified Data.ByteString.Char8 as B +import qualified Data.ByteString as BW +import qualified Codec.Binary.Base64 as Base64 +import System.Process +import Data.Maybe #if !defined(mingw32_HOST_OS) import System.Posix #endif @@ -24,6 +28,22 @@ protocolNumber = "43" +checkReplay :: [B.ByteString] -> IO () +checkReplay msgs = do + tempDir <- getTemporaryDirectory + (fileName, h) <- openBinaryTempFile tempDir "checker-demo" + B.hPut h . BW.pack . concat . map (fromJust . Base64.decode . B.unpack) $ msgs + hFlush h + hClose h + + (_, _, Just hErr, _) <- createProcess (proc "/usr/home/unC0Rr/Sources/Hedgewars/Releases/0.9.18/bin/hwengine" + ["/usr/home/unC0Rr/.hedgewars" + , "/usr/home/unC0Rr/Sources/Hedgewars/Releases/0.9.18/share/hedgewars/Data" + , fileName]) + {std_err = CreatePipe} + hSetBuffering hErr LineBuffering + + takePacks :: State B.ByteString [[B.ByteString]] takePacks = do modify (until (not . B.isPrefixOf pDelim) (B.drop 2)) @@ -76,6 +96,7 @@ answer ["CHECKER", protocolNumber, l, p] answer ["READY"] onPacket ["PING"] = answer ["PONG"] + onPacket ("REPLAY":msgs) = checkReplay msgs onPacket ("BYE" : xs) = error $ show xs onPacket _ = return ()