Browse Source

junction: setupTimer implementation

junction
Denis Tereshkin 4 years ago
parent
commit
ca2927106c
  1. 3
      src/ATrade/Driver/Junction.hs
  2. 11
      src/ATrade/Driver/Junction/RobotDriverThread.hs

3
src/ATrade/Driver/Junction.hs

@ -151,7 +151,8 @@ junctionMain descriptors = do @@ -151,7 +151,8 @@ junctionMain descriptors = do
bigConf <- loadConfig (configKey inst)
rConf <- liftIO $ newIORef (confStrategy bigConf)
rState <- loadState (stateKey inst) >>= liftIO . newIORef
let robotEnv = RobotEnv rState rConf bro barsMap
rTimers <- loadState (stateKey inst <> ":timers") >>= liftIO . newIORef
let robotEnv = RobotEnv rState rConf rTimers bro barsMap
createRobotDriverThread inst desc (flip runReaderT robotEnv . unRobotM) bigConf rConf rState
Nothing -> error "Unknown strategy"
where

11
src/ATrade/Driver/Junction/RobotDriverThread.hs

@ -40,10 +40,11 @@ import Control.Monad (forM_, forever, void) @@ -40,10 +40,11 @@ import Control.Monad (forM_, forever, void)
import Control.Monad.IO.Class (MonadIO, liftIO)
import Control.Monad.Reader (MonadReader, ReaderT, asks)
import Data.Aeson (FromJSON, ToJSON)
import Data.IORef (IORef, readIORef,
writeIORef)
import Data.IORef (IORef, atomicModifyIORef',
readIORef, writeIORef)
import qualified Data.Map.Strict as M
import qualified Data.Text.Lazy as TL
import Data.Time (UTCTime)
import Dhall (FromDhall)
import System.Log.Logger (infoM)
@ -114,6 +115,7 @@ data RobotEnv c s = @@ -114,6 +115,7 @@ data RobotEnv c s =
{
stateRef :: IORef s,
configRef :: IORef c,
timersRef :: IORef [UTCTime],
broker :: BrokerClientHandle,
bars :: IORef Bars
}
@ -132,7 +134,10 @@ instance MonadRobot (RobotM c s) c s where @@ -132,7 +134,10 @@ instance MonadRobot (RobotM c s) c s where
appendToLog = liftIO . infoM "Robot" . TL.unpack
setupTimer = undefined
setupTimer t = do
ref <- asks timersRef
liftIO $ atomicModifyIORef' ref (\s -> (t : s, ()))
enqueueIOAction = undefined
getConfig = asks configRef >>= liftIO . readIORef
getState = asks stateRef >>= liftIO . readIORef

Loading…
Cancel
Save