haskell thrift

Ping Pong con Haskell y Thrift se atasca



(1)

Estoy tratando de hacer un simple Ping Pong usando Haskell y Thrift. Sin embargo, solo hace una repetición y luego se atasca. Supongo que el problema está en el uso (in) correcto de Thrift en lugar de en Haskell. Probablemente algo no se ha lavado correctamente. ¿Hay alguien con experiencia en Thrift que pueda ayudarme a hacer una suposición educada sobre cómo solucionar esto?

Servidor:

echorequest :: TXT echorequest = TXT { f_TXT_anytxt = Just "Ping" } echoreply :: TXT echoreply = TXT { f_TXT_anytxt = Just "Pong" } serverFunc :: a -> (BinaryProtocol Handle, BinaryProtocol Handle) -> IO Bool serverFunc a (h1,h2) = do let t1 = getTransport h1 dat <- read_TXT h1 -- the following two lines are only for debugging putStrLn "Recieved data:" print dat write_TXT h1 echoreply tFlush t1 -- the following line is for debugging putStrLn "Data written" return False main :: IO () main = do runBasicServer () serverFunc 4390 putStrLn "Server stopped"

Cliente:

main :: IO () main = do h <- connectTo "127.0.0.1" $ PortNumber 4390 let proto = BinaryProtocol h putStrLn "Client started" let tryOnePing c i = do write_TXT proto echorequest putStrLn "ping sent" tFlush h w <- read_TXT proto putStrLn "pong received" return $ if w == echoreply then c+1 else c c <- foldM tryOnePing 0 [0 .. 1000] tClose h print (c, 10000 - c)