gameServer/EngineInteraction.hs
changeset 10060 bcf2e1ca2971
parent 10058 4ed428389c4e
child 10065 35bd559c1973
equal deleted inserted replaced
10059:015ed10e7e66 10060:bcf2e1ca2971
    12 import qualified Data.List as L
    12 import qualified Data.List as L
    13 import Data.Word
    13 import Data.Word
    14 import Data.Bits
    14 import Data.Bits
    15 import Control.Arrow
    15 import Control.Arrow
    16 import Data.Maybe
    16 import Data.Maybe
    17 import Codec.Compression.Zlib as Z
       
    18 -------------
    17 -------------
    19 import CoreTypes
    18 import CoreTypes
    20 import Utils
    19 import Utils
    21 
    20 
    22 {-
    21 {-
    23     this is snippet from http://stackoverflow.com/questions/10043102/how-to-catch-the-decompress-ioerror
    22     this is snippet from http://stackoverflow.com/questions/10043102/how-to-catch-the-decompress-ioerror
    24     because standard 'catch' doesn't seem to catch decompression errors for some reason
    23     because standard 'catch' doesn't seem to catch decompression errors for some reason
    25 -}
    24 -}
    26 import qualified Codec.Compression.Zlib.Internal as Z
    25 import qualified Codec.Compression.Zlib.Internal as Z
    27 
    26 
    28 decompressWithoutExceptions :: BL.ByteString -> Either Z.DecompressError BL.ByteString
    27 decompressWithoutExceptions :: BL.ByteString -> Either String BL.ByteString
    29 decompressWithoutExceptions = finalise
    28 decompressWithoutExceptions = finalise
    30                             . Z.foldDecompressStream cons nil err
    29                             . Z.foldDecompressStream cons nil err
    31                             . Z.decompressWithErrors Z.gzipFormat Z.defaultDecompressParams
    30                             . Z.decompressWithErrors Z.zlibFormat Z.defaultDecompressParams
    32   where err errorCode _ = Left errorCode
    31   where err errorCode msg = Left msg
    33         nil = Right []
    32         nil = Right []
    34         cons chunk = right (chunk :)
    33         cons chunk = right (chunk :)
    35         finalise = right BL.fromChunks
    34         finalise = right BL.fromChunks
    36 {- end snippet  -}
    35 {- end snippet  -}
    37 
    36