From 75b94d9d77efebe7b881f57693e01e25614a00e2 Mon Sep 17 00:00:00 2001 From: Denis Tereshkin Date: Tue, 29 Nov 2016 16:17:37 +0700 Subject: [PATCH] Minor refactoring --- src/ATrade/Broker/Server.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ATrade/Broker/Server.hs b/src/ATrade/Broker/Server.hs index bcce506..f9c9945 100644 --- a/src/ATrade/Broker/Server.hs +++ b/src/ATrade/Broker/Server.hs @@ -98,12 +98,12 @@ notificationCallback state n = do tradeSinkHandler :: Context -> IORef BrokerServerState -> T.Text -> IO () tradeSinkHandler c state tradeSinkEp = when (tradeSinkEp /= "") $ - whileM_ (fmap killMvar (readIORef state) >>= fmap isNothing . tryReadMVar) $ + whileM_ (not <$> wasKilled) $ withSocket c Req (\sock -> do chan <- tradeSink <$> readIORef state connect sock $ T.unpack tradeSinkEp timeoutMv <- newEmptyMVar - whileM_ (andM [fmap killMvar (readIORef state) >>= fmap isNothing . tryReadMVar, isNothing <$> tryReadMVar timeoutMv]) $ do + whileM_ (andM [not <$> wasKilled, isNothing <$> tryReadMVar timeoutMv]) $ do threadDelay 500000 maybeTrade <- tryReadChan chan case maybeTrade of @@ -113,10 +113,10 @@ tradeSinkHandler c state tradeSinkEp = when (tradeSinkEp /= "") $ events <- poll 5000 [Sock sock [In] Nothing] if not . L.null . L.head $ events then void . receive $ sock -- anything will do - else putMVar timeoutMv () - ) + else putMVar timeoutMv ()) where + wasKilled = fmap killMvar (readIORef state) >>= fmap isJust . tryReadMVar encodeTrade :: Trade -> B.ByteString encodeTrade = BL.toStrict . encode . convertTrade convertTrade trade = TradeSinkTrade {