Browse Source

junction: RemoteControl: fix incoming message polling

master
Denis Tereshkin 4 years ago
parent
commit
b06b02a092
  1. 16
      src/ATrade/Driver/Junction/RemoteControl.hs

16
src/ATrade/Driver/Junction/RemoteControl.hs

@ -98,13 +98,15 @@ handleRemoteControl timeout = do
sock <- asks peRemoteControlSocket sock <- asks peRemoteControlSocket
logger <- asks peLogAction logger <- asks peLogAction
evs <- poll (fromIntegral timeout) [Sock sock [In] Nothing] evs <- poll (fromIntegral timeout) [Sock sock [In] Nothing]
unless (null evs) $ do case evs of
rawRequest <- liftIO $ receive sock (x:_) -> unless (null x) $ do
case parseRemoteControlRequest rawRequest of rawRequest <- liftIO $ receive sock
Left err -> logErrorWith logger "RemoteControl" ("Unable to parse request: " <> (T.pack . show) err) case parseRemoteControlRequest rawRequest of
Right request -> do Left err -> logErrorWith logger "RemoteControl" ("Unable to parse request: " <> (T.pack . show) err)
response <- handleRequest request Right request -> do
liftIO $ send sock [] (makeRemoteControlResponse response) response <- handleRequest request
liftIO $ send sock [] (makeRemoteControlResponse response)
_ -> return ()
where where
handleRequest (StartRobot inst) = do handleRequest (StartRobot inst) = do
startRobot inst startRobot inst

Loading…
Cancel
Save