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 { @@ -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,

6
src/Main.hs

@ -49,7 +49,8 @@ import System.ZMQ4 (withContext) @@ -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 @@ -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 @@ -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)

6
src/TXMLConnector.hs

@ -167,9 +167,9 @@ brCancelOrder h oid = void $ makeRequest h (RequestCancelOrder oid) @@ -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

Loading…
Cancel
Save