From 3f3ee97b9fc550c041d72466040027800e9be946 Mon Sep 17 00:00:00 2001 From: Denis Tereshkin Date: Fri, 11 Oct 2024 23:32:11 +0700 Subject: [PATCH] Add multiaccount support --- src/Config.hs | 2 +- src/Main.hs | 6 ++++-- src/TXMLConnector.hs | 6 +++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Config.hs b/src/Config.hs index 93ff80d..c318bcd 100644 --- a/src/Config.hs +++ b/src/Config.hs @@ -26,7 +26,7 @@ data TransaqConnectorConfig = TransaqConnectorConfig { brokerClientCertificateDir :: Maybe FilePath, tisEndpoint :: T.Text, historyProviderEndpoint :: T.Text, - account :: T.Text, + accounts :: [T.Text], transaqLogin :: T.Text, transaqPassword :: T.Text, transaqNewPassword :: T.Text, diff --git a/src/Main.hs b/src/Main.hs index 6d8d7ab..d10517d 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -49,7 +49,8 @@ import System.ZMQ4 (withContext) import TickerInfoServer (withTickerInfoServer) import TickTable (newTickTable) import qualified TXMLConnector as Connector -import Version (transaqConnectorVersionText) +import Version (transaqConnectorVersionText, + transaqConnector_gitrev) mkLogger :: (MonadIO m) => Handle -> Severity -> LogAction m Message mkLogger h sev = cfilter (\m -> msgSeverity m >= sev) (fmtMessage >$< (logTextStdout <> logTextHandle h)) @@ -90,6 +91,7 @@ main = do let log = logWith logger log Info "main" $ "Starting transaq-connector-" <> transaqConnectorVersionText <> + "(" <> T.pack transaqConnector_gitrev <> ")" <> "; libatrade-" <> (T.pack . showVersion) libatrade_version <> "(" <> @@ -111,7 +113,7 @@ main = do txml <- Connector.start logger tickTable cfg qssChannel tisH startTimestamp <- floor <$> getPOSIXTime bracket (startBrokerServer - [Connector.makeBrokerBackend txml (account cfg), paper] + [Connector.makeBrokerBackend txml (accounts cfg), paper] ctx (brokerEndpoint cfg) (brokerNotificationsEndpoint cfg) diff --git a/src/TXMLConnector.hs b/src/TXMLConnector.hs index 5700286..be8ff5c 100644 --- a/src/TXMLConnector.hs +++ b/src/TXMLConnector.hs @@ -167,9 +167,9 @@ brCancelOrder h oid = void $ makeRequest h (RequestCancelOrder oid) brSetNotificationCallback :: TXMLConnectorHandle -> Maybe (BrokerBackendNotification -> IO ()) -> IO () brSetNotificationCallback h cb = atomically $ writeTVar (hNotificationCallback h) cb -makeBrokerBackend :: TXMLConnectorHandle -> T.Text -> BrokerBackend -makeBrokerBackend h accountId = - BrokerBackend [accountId] (brSetNotificationCallback h) (brSubmitOrder h) (brCancelOrder h) (TXMLConnector.stop h) +makeBrokerBackend :: TXMLConnectorHandle -> [T.Text] -> BrokerBackend +makeBrokerBackend h accounts = + BrokerBackend accounts (brSetNotificationCallback h) (brSubmitOrder h) (brCancelOrder h) (TXMLConnector.stop h) makeRequest :: TXMLConnectorHandle -> Request -> IO Response makeRequest h request = do