listenServer serverOut context = do
msgBytes <- getNextMessage serverOut
- reqMap <- readMVar $ requestMap context
-
- let msg = fst $ decodeFromServerMsg reqMap msgBytes
+ msg <- modifyMVar (requestMap context) $ \reqMap -> do
+ let (msg, newReqMap) = decodeFromServerMsg reqMap msgBytes
writeChan (messageChan context) (ServerMessage msg)
+ pure (newReqMap, msg)
case msg of
(FromServerRsp SShutdown _) -> return ()