You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
2.8 KiB

3 years ago
module Main (main) where
import ATrade (libatrade_gitrev,
libatrade_version)
import ATrade.Logging (Message (..), Severity (Info),
logWith)
import ATrade.Logging (fmtMessage)
import ATrade.QuoteSource.Server (startQuoteSourceServer,
stopQuoteSourceServer)
import ATrade.Types (defaultServerSecurityParams)
import Colog (LogAction, logTextStdout,
(>$<))
import Colog.Actions (logTextHandle)
import Config (TransaqConnectorConfig (..),
loadConfig)
import Control.Concurrent (threadDelay)
import Control.Concurrent.BoundedChan (newBoundedChan)
import Control.Exception (bracket)
import Control.Monad (forever, void)
import Control.Monad.IO.Class (MonadIO)
import qualified Data.Text as T
import Data.Version (showVersion)
import Debug.EventCounters (initEventCounters)
import Prelude hiding (log)
import System.IO (Handle, IOMode (AppendMode),
withFile)
import System.ZMQ4 (withContext)
import qualified TXMLConnector as Connector
import Version (transaqConnectorVersionText)
mkLogger :: (MonadIO m) => Handle -> LogAction m Message
mkLogger h = fmtMessage >$< (logTextStdout <> logTextHandle h)
main :: IO ()
main = do
initEventCounters
cfg <- loadConfig "transaq-connector.dhall"
withFile "transaq-connector.log" AppendMode $ \logH -> do
let logger = mkLogger logH
let log = logWith logger
log Info "main" $ "Starting transaq-connector-" <>
transaqConnectorVersionText <>
"; libatrade-" <>
(T.pack . showVersion) libatrade_version <>
"(" <>
T.pack libatrade_gitrev <>
")"
void $ withContext $ \ctx -> do
qssChannel <- newBoundedChan 50000
bracket (startQuoteSourceServer
qssChannel
ctx
(quotesourceEndpoint cfg)
defaultServerSecurityParams)
stopQuoteSourceServer $ \_ -> do
_ <- Connector.start logger cfg qssChannel
forever $ threadDelay 1000000
log Info "main" "Shutting down"