gameServer/Utils.hs
changeset 1917 c94045b70142
parent 1804 4e78ad846fb6
child 1953 fd9c8e3c734d
equal deleted inserted replaced
1916:9c3d0e3df6bb 1917:c94045b70142
     4 import Control.Concurrent.STM
     4 import Control.Concurrent.STM
     5 import Data.Char
     5 import Data.Char
     6 import Data.Word
     6 import Data.Word
     7 import qualified Data.Map as Map
     7 import qualified Data.Map as Map
     8 import qualified Data.IntMap as IntMap
     8 import qualified Data.IntMap as IntMap
       
     9 import Numeric
       
    10 import Network.Socket
       
    11 import qualified Data.List as List
     9 -------------------------------------------------
    12 -------------------------------------------------
    10 import qualified Codec.Binary.Base64 as Base64
    13 import qualified Codec.Binary.Base64 as Base64
    11 import qualified Codec.Binary.UTF8.String as UTF8
    14 import qualified Codec.Binary.UTF8.String as UTF8
    12 import CoreTypes
    15 import CoreTypes
       
    16 
       
    17 
       
    18 sockAddr2String :: SockAddr -> IO String
       
    19 sockAddr2String (SockAddrInet _ hostAddr) = inet_ntoa hostAddr
       
    20 sockAddr2String (SockAddrInet6 _ _ (a, b, c, d) _) =
       
    21 	return $ (foldr1 (.)
       
    22 		$ List.intersperse (\a -> ':':a)
       
    23 		$ concatMap (\n -> (\(a, b) -> [showHex a, showHex b]) $ divMod n 65536) [a, b, c, d]) []
    13 
    24 
    14 toEngineMsg :: String -> String
    25 toEngineMsg :: String -> String
    15 toEngineMsg msg = Base64.encode (fromIntegral (length msg) : (UTF8.encode msg))
    26 toEngineMsg msg = Base64.encode (fromIntegral (length msg) : (UTF8.encode msg))
    16 
    27 
    17 --tselect :: [ClientInfo] -> STM ([String], ClientInfo)
    28 --tselect :: [ClientInfo] -> STM ([String], ClientInfo)