Browse Source

Add multiaccount support

master
Denis Tereshkin 1 year ago
parent
commit
3f3ee97b9f
  1. 2
      src/Config.hs
  2. 6
      src/Main.hs
  3. 6
      src/TXMLConnector.hs

2
src/Config.hs

@ -26,7 +26,7 @@ data TransaqConnectorConfig = TransaqConnectorConfig {
brokerClientCertificateDir :: Maybe FilePath, brokerClientCertificateDir :: Maybe FilePath,
tisEndpoint :: T.Text, tisEndpoint :: T.Text,
historyProviderEndpoint :: T.Text, historyProviderEndpoint :: T.Text,
account :: T.Text, accounts :: [T.Text],
transaqLogin :: T.Text, transaqLogin :: T.Text,
transaqPassword :: T.Text, transaqPassword :: T.Text,
transaqNewPassword :: T.Text, transaqNewPassword :: T.Text,

6
src/Main.hs

@ -49,7 +49,8 @@ import System.ZMQ4 (withContext)
import TickerInfoServer (withTickerInfoServer) import TickerInfoServer (withTickerInfoServer)
import TickTable (newTickTable) import TickTable (newTickTable)
import qualified TXMLConnector as Connector import qualified TXMLConnector as Connector
import Version (transaqConnectorVersionText) import Version (transaqConnectorVersionText,
transaqConnector_gitrev)
mkLogger :: (MonadIO m) => Handle -> Severity -> LogAction m Message mkLogger :: (MonadIO m) => Handle -> Severity -> LogAction m Message
mkLogger h sev = cfilter (\m -> msgSeverity m >= sev) (fmtMessage >$< (logTextStdout <> logTextHandle h)) mkLogger h sev = cfilter (\m -> msgSeverity m >= sev) (fmtMessage >$< (logTextStdout <> logTextHandle h))
@ -90,6 +91,7 @@ main = do
let log = logWith logger let log = logWith logger
log Info "main" $ "Starting transaq-connector-" <> log Info "main" $ "Starting transaq-connector-" <>
transaqConnectorVersionText <> transaqConnectorVersionText <>
"(" <> T.pack transaqConnector_gitrev <> ")" <>
"; libatrade-" <> "; libatrade-" <>
(T.pack . showVersion) libatrade_version <> (T.pack . showVersion) libatrade_version <>
"(" <> "(" <>
@ -111,7 +113,7 @@ main = do
txml <- Connector.start logger tickTable cfg qssChannel tisH txml <- Connector.start logger tickTable cfg qssChannel tisH
startTimestamp <- floor <$> getPOSIXTime startTimestamp <- floor <$> getPOSIXTime
bracket (startBrokerServer bracket (startBrokerServer
[Connector.makeBrokerBackend txml (account cfg), paper] [Connector.makeBrokerBackend txml (accounts cfg), paper]
ctx ctx
(brokerEndpoint cfg) (brokerEndpoint cfg)
(brokerNotificationsEndpoint cfg) (brokerNotificationsEndpoint cfg)

6
src/TXMLConnector.hs

@ -167,9 +167,9 @@ brCancelOrder h oid = void $ makeRequest h (RequestCancelOrder oid)
brSetNotificationCallback :: TXMLConnectorHandle -> Maybe (BrokerBackendNotification -> IO ()) -> IO () brSetNotificationCallback :: TXMLConnectorHandle -> Maybe (BrokerBackendNotification -> IO ()) -> IO ()
brSetNotificationCallback h cb = atomically $ writeTVar (hNotificationCallback h) cb brSetNotificationCallback h cb = atomically $ writeTVar (hNotificationCallback h) cb
makeBrokerBackend :: TXMLConnectorHandle -> T.Text -> BrokerBackend makeBrokerBackend :: TXMLConnectorHandle -> [T.Text] -> BrokerBackend
makeBrokerBackend h accountId = makeBrokerBackend h accounts =
BrokerBackend [accountId] (brSetNotificationCallback h) (brSubmitOrder h) (brCancelOrder h) (TXMLConnector.stop h) BrokerBackend accounts (brSetNotificationCallback h) (brSubmitOrder h) (brCancelOrder h) (TXMLConnector.stop h)
makeRequest :: TXMLConnectorHandle -> Request -> IO Response makeRequest :: TXMLConnectorHandle -> Request -> IO Response
makeRequest h request = do makeRequest h request = do

Loading…
Cancel
Save