Browse Source

Fix in brokerserver: trade sink

master
Denis Tereshkin 9 years ago
parent
commit
9b2e5b1f9b
  1. 9
      src/ATrade/Broker/Server.hs

9
src/ATrade/Broker/Server.hs

@ -119,10 +119,13 @@ tradeSinkHandler c state tradeSinkEp = when (tradeSinkEp /= "") $ @@ -119,10 +119,13 @@ tradeSinkHandler c state tradeSinkEp = when (tradeSinkEp /= "") $
connect sock $ T.unpack tradeSinkEp
timeoutMv <- newIORef False
threadDelay 1000000
whileM_ (andM [not <$> wasKilled, readIORef timeoutMv]) $ do
whileM_ (andM [not <$> wasKilled, not <$> readIORef timeoutMv]) $ do
maybeTrade <- tryReadChan chan
case maybeTrade of
Just trade -> sendMulti sock $ B.empty :| [encodeTrade trade]
Just trade -> do
sendMulti sock $ B.empty :| [encodeTrade trade]
_ <- receiveMulti sock
return ()
Nothing -> do
threadDelay 1000000
sendMulti sock $ B.empty :| [BL.toStrict $ encode TradeSinkHeartBeat]
@ -169,8 +172,6 @@ brokerServerThread state = finally brokerServerThread' cleanup @@ -169,8 +172,6 @@ brokerServerThread state = finally brokerServerThread' cleanup
case shouldResend sqnum peerId lastPackMap of
Just response -> do
sendMessage sock peerId response -- Resend
_ <- receiveMulti sock
return ()
Nothing -> do
-- Handle incoming request, send response
response <- handleMessage peerId request

Loading…
Cancel
Save