|
|
|
@ -1,37 +1,41 @@ |
|
|
|
|
|
|
|
|
|
|
|
module Main (main) where |
|
|
|
module Main (main) where |
|
|
|
|
|
|
|
|
|
|
|
import ATrade (libatrade_gitrev, |
|
|
|
import ATrade (libatrade_gitrev, |
|
|
|
libatrade_version) |
|
|
|
libatrade_version) |
|
|
|
import ATrade.Broker.Protocol (NotificationSqnum (NotificationSqnum)) |
|
|
|
import ATrade.Broker.Protocol (NotificationSqnum (NotificationSqnum)) |
|
|
|
import ATrade.Broker.Server (startBrokerServer, |
|
|
|
import ATrade.Broker.Server (startBrokerServer, |
|
|
|
stopBrokerServer) |
|
|
|
stopBrokerServer) |
|
|
|
import ATrade.Logging (Message (..), Severity (Debug, Error, Info, Trace, Warning), |
|
|
|
import ATrade.Broker.TradeSinks.MQTTTradeSink (withMQTTTradeSink) |
|
|
|
fmtMessage, logWith) |
|
|
|
import ATrade.Broker.TradeSinks.ZMQTradeSink (withZMQTradeSink) |
|
|
|
import ATrade.QuoteSource.Server (startQuoteSourceServer, |
|
|
|
import ATrade.Logging (Message (..), Severity (Debug, Error, Info, Trace, Warning), |
|
|
|
stopQuoteSourceServer) |
|
|
|
fmtMessage, logWith) |
|
|
|
import ATrade.Types (defaultServerSecurityParams) |
|
|
|
import ATrade.QuoteSource.Server (startQuoteSourceServer, |
|
|
|
import Colog (LogAction, cfilter, |
|
|
|
stopQuoteSourceServer) |
|
|
|
logTextStdout, (>$<)) |
|
|
|
import ATrade.Types (defaultServerSecurityParams) |
|
|
|
import Colog.Actions (logTextHandle) |
|
|
|
import Colog (LogAction, cfilter, |
|
|
|
import Config (TransaqConnectorConfig (..), |
|
|
|
logTextStdout, (>$<)) |
|
|
|
loadConfig) |
|
|
|
import Colog.Actions (logTextHandle) |
|
|
|
import Control.Concurrent (threadDelay) |
|
|
|
import Config (TransaqConnectorConfig (..), |
|
|
|
import Control.Concurrent.BoundedChan (newBoundedChan) |
|
|
|
loadConfig) |
|
|
|
import Control.Exception (bracket) |
|
|
|
import Control.Concurrent (threadDelay) |
|
|
|
import Control.Monad (forever, void) |
|
|
|
import Control.Concurrent.BoundedChan (newBoundedChan) |
|
|
|
import Control.Monad.IO.Class (MonadIO) |
|
|
|
import Control.Exception (bracket) |
|
|
|
import qualified Data.Text as T |
|
|
|
import Control.Monad (forever, void) |
|
|
|
import Data.Version (showVersion) |
|
|
|
import Control.Monad.IO.Class (MonadIO) |
|
|
|
import Debug.EventCounters (initEventCounters) |
|
|
|
import qualified Data.Text as T |
|
|
|
import HistoryProviderServer (withHistoryProviderServer) |
|
|
|
import Data.Version (showVersion) |
|
|
|
import Prelude hiding (log) |
|
|
|
import Debug.EventCounters (initEventCounters) |
|
|
|
import System.IO (Handle, IOMode (AppendMode), |
|
|
|
import HistoryProviderServer (withHistoryProviderServer) |
|
|
|
withFile) |
|
|
|
import Network.URI (parseURI) |
|
|
|
import System.ZMQ4 (withContext) |
|
|
|
import Prelude hiding (log) |
|
|
|
import TickerInfoServer (withTickerInfoServer) |
|
|
|
import System.IO (Handle, |
|
|
|
import qualified TXMLConnector as Connector |
|
|
|
IOMode (AppendMode), |
|
|
|
import Version (transaqConnectorVersionText) |
|
|
|
withFile) |
|
|
|
|
|
|
|
import System.ZMQ4 (withContext) |
|
|
|
|
|
|
|
import TickerInfoServer (withTickerInfoServer) |
|
|
|
|
|
|
|
import qualified TXMLConnector as Connector |
|
|
|
|
|
|
|
import Version (transaqConnectorVersionText) |
|
|
|
|
|
|
|
|
|
|
|
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)) |
|
|
|
@ -43,7 +47,7 @@ parseLoglevel 2 = Info |
|
|
|
parseLoglevel 3 = Debug |
|
|
|
parseLoglevel 3 = Debug |
|
|
|
parseLoglevel _ = Trace |
|
|
|
parseLoglevel _ = Trace |
|
|
|
|
|
|
|
|
|
|
|
main :: IO () |
|
|
|
main :: IO () |
|
|
|
main = do |
|
|
|
main = do |
|
|
|
initEventCounters |
|
|
|
initEventCounters |
|
|
|
cfg <- loadConfig "transaq-connector.dhall" |
|
|
|
cfg <- loadConfig "transaq-connector.dhall" |
|
|
|
@ -66,21 +70,28 @@ main = do |
|
|
|
(quotesourceEndpoint cfg) |
|
|
|
(quotesourceEndpoint cfg) |
|
|
|
defaultServerSecurityParams) |
|
|
|
defaultServerSecurityParams) |
|
|
|
stopQuoteSourceServer $ \_ -> withTickerInfoServer logger ctx (tisEndpoint cfg) $ \tisH -> do |
|
|
|
stopQuoteSourceServer $ \_ -> withTickerInfoServer logger ctx (tisEndpoint cfg) $ \tisH -> do |
|
|
|
txml <- Connector.start logger cfg qssChannel tisH |
|
|
|
withZMQTradeSink ctx (tradesinkDashboard cfg) $ \tsDashboard -> |
|
|
|
bracket (startBrokerServer |
|
|
|
case parseURI (T.unpack $ mqttUri cfg) of |
|
|
|
[Connector.makeBrokerBackend txml (account cfg)] |
|
|
|
Just uri -> do |
|
|
|
ctx |
|
|
|
withMQTTTradeSink uri mqttTradeSinkTopic $ \tsMqtt -> do |
|
|
|
(brokerEndpoint cfg) |
|
|
|
txml <- Connector.start logger cfg qssChannel tisH |
|
|
|
(brokerNotificationsEndpoint cfg) |
|
|
|
bracket (startBrokerServer |
|
|
|
(NotificationSqnum 1) |
|
|
|
[Connector.makeBrokerBackend txml (account cfg)] |
|
|
|
[] |
|
|
|
ctx |
|
|
|
defaultServerSecurityParams |
|
|
|
(brokerEndpoint cfg) |
|
|
|
logger) (\x -> do |
|
|
|
(brokerNotificationsEndpoint cfg) |
|
|
|
stopBrokerServer x |
|
|
|
(NotificationSqnum 1) |
|
|
|
log Info "main" "Stopping TXMLConnector" |
|
|
|
[tsDashboard, tsMqtt] |
|
|
|
Connector.stop txml) $ \_ -> do |
|
|
|
defaultServerSecurityParams |
|
|
|
withHistoryProviderServer ctx (historyProviderEndpoint cfg) txml tisH logger id $ \_ -> do |
|
|
|
logger) (\x -> do |
|
|
|
forever $ threadDelay 1000000 |
|
|
|
stopBrokerServer x |
|
|
|
|
|
|
|
log Info "main" "Stopping TXMLConnector" |
|
|
|
|
|
|
|
Connector.stop txml) $ \_ -> do |
|
|
|
|
|
|
|
withHistoryProviderServer ctx (historyProviderEndpoint cfg) txml tisH logger id $ \_ -> do |
|
|
|
|
|
|
|
forever $ threadDelay 1000000 |
|
|
|
|
|
|
|
Nothing -> log Warning "main" "Can't parse MQTT URI" |
|
|
|
log Info "main" "Shutting down" |
|
|
|
log Info "main" "Shutting down" |
|
|
|
|
|
|
|
where |
|
|
|
|
|
|
|
mqttTradeSinkTopic = "/atrade/trades" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|