gameServer/OfficialServer/checker.hs
changeset 9403 9f6ca48d8e9c
parent 9399 1767c92eff37
child 9421 90fe753b3654
equal deleted inserted replaced
9401:2af7bea32e5e 9403:9f6ca48d8e9c
    45                 return $ fromJust l : lst
    45                 return $ fromJust l : lst
    46 
    46 
    47 
    47 
    48 engineListener :: Chan Message -> Handle -> String -> IO ()
    48 engineListener :: Chan Message -> Handle -> String -> IO ()
    49 engineListener coreChan h fileName = do
    49 engineListener coreChan h fileName = do
    50     stats <- liftM (L.dropWhile start) $ getLines h
    50     stats <- liftM (L.takeWhile (not . B.null) . L.dropWhile (not . start)) $ getLines h
    51     debugM "Engine" $ show stats
    51     debugM "Engine" $ show stats
    52     if null stats then
    52     if null stats then
    53         writeChan coreChan $ CheckFailed "No stats msg"
    53         writeChan coreChan $ CheckFailed "No stats msg"
    54         else
    54         else
    55         writeChan coreChan $ CheckSuccess stats
    55         writeChan coreChan $ CheckSuccess stats
    61 
    61 
    62 checkReplay :: Chan Message -> [B.ByteString] -> IO ()
    62 checkReplay :: Chan Message -> [B.ByteString] -> IO ()
    63 checkReplay coreChan msgs = do
    63 checkReplay coreChan msgs = do
    64     tempDir <- getTemporaryDirectory
    64     tempDir <- getTemporaryDirectory
    65     (fileName, h) <- openBinaryTempFile tempDir "checker-demo"
    65     (fileName, h) <- openBinaryTempFile tempDir "checker-demo"
    66     B.hPut h . BW.pack . concat . map (fromJust . Base64.decode . B.unpack) $ msgs
    66     B.hPut h . BW.pack . concat . map (fromMaybe [] . Base64.decode . B.unpack) $ msgs
    67     hFlush h
    67     hFlush h
    68     hClose h
    68     hClose h
    69 
    69 
    70     (_, Just hOut, _, _) <- createProcess (proc "/usr/home/unC0Rr/Sources/Hedgewars/Releases/0.9.19/bin/hwengine"
    70     (_, _, Just hOut, _) <- createProcess (proc "/usr/home/unC0Rr/Sources/Hedgewars/Releases/0.9.19/bin/hwengine"
    71                 [fileName
    71                 [fileName
    72                 , "--user-prefix", "/usr/home/unC0Rr/.hedgewars"
    72                 , "--user-prefix", "/usr/home/unC0Rr/.hedgewars"
    73                 , "--prefix", "/usr/home/unC0Rr/Sources/Hedgewars/Releases/0.9.19/share/hedgewars/Data"
    73                 , "--prefix", "/usr/home/unC0Rr/Sources/Hedgewars/Releases/0.9.19/share/hedgewars/Data"
    74                 , "--nomusic"
    74                 , "--nomusic"
    75                 , "--nosound"
    75                 , "--nosound"
    76                 ])
    76                 ])
    77             {std_out = CreatePipe}
    77             {std_err = CreatePipe}
    78     hSetBuffering hOut LineBuffering
    78     hSetBuffering hOut LineBuffering
    79     void $ forkIO $ engineListener coreChan hOut fileName
    79     void $ forkIO $ engineListener coreChan hOut fileName
    80 
    80 
    81 
    81 
    82 takePacks :: State B.ByteString [[B.ByteString]]
    82 takePacks :: State B.ByteString [[B.ByteString]]