37 bool autoInitPartitions =
true);
39 TradingCore(std::unique_ptr<data::DatabaseWorker> dbWorker,
40 std::unique_ptr<data::AuthRepository> authRepo,
41 std::unique_ptr<data::TradeIDRepository> tradeIDRepo,
42 std::unique_ptr<TradeIDGenerator> tradeIDGen,
43 std::unique_ptr<OrderIDGenerator> orderIDGen,
44 bool autoInitPartitions =
true);
56 virtual void submitCommand(std::unique_ptr<Command> command)
const;
80 std::optional<common::Instrument>
90 std::unique_ptr<Partition> partition);
103 std::unique_ptr<Partition>
Asynchronous database worker abstraction.
Represents a partition (shard) of the trading engine for a single symbol.
Repository to persist and retrieve the current trade ID.
Persists and retrieves FIX Client authentication lists.
Definition AuthRepository.h:12
Executes database tasks asynchronously.
Definition DatabaseWorker.h:22
Represents a FIX Execution Report (35=8) message.
Definition ExecutionReport.h:14
Manages market data subscriptions and broadcasts updates.
Definition MarketDataPublisher.h:20
A thread-safe, database-aware generator for unique order IDs.
Definition OrderIDGenerator.h:15
Encapsulates all components needed to process commands for a symbol.
Definition Partition.h:32
High-level manager for partitions and command dispatch.
Definition TradingCore.h:30
std::unique_ptr< data::AuthRepository > mAuthRepo
Definition TradingCore.h:99
void stopAcceptingCommands()
Definition TradingCore.cpp:117
ExecutionReportCallback mExecutionReportCallback
Definition TradingCore.h:105
std::unique_ptr< OrderIDGenerator > mOrderIDGenerator
Definition TradingCore.h:102
std::unique_ptr< Partition > mPartitions[static_cast< int >(common::Instrument::COUNT)]
Definition TradingCore.h:104
std::function< void(const fix::ExecutionReport &)> ExecutionReportCallback
Definition TradingCore.h:32
std::optional< common::Instrument > findPartitionForOrder(common::OrderID orderId) const
Definition TradingCore.cpp:263
Partition * getPartition(common::Instrument instrument) const
Definition TradingCore.cpp:199
void waitAllQueuesIdle() const
Definition TradingCore.cpp:124
std::optional< common::Order > getOrderByClientOrderId(const std::string &clientOrderId) const
Definition TradingCore.cpp:289
virtual void subscribeToMarketData(common::Symbol symbol, common::SessionID sessionId)
Definition TradingCore.cpp:225
virtual void unsubscribeFromMarketData(common::Symbol symbol, common::SessionID sessionId)
Definition TradingCore.cpp:235
data::AuthRepository * getAuthRepository() const
Definition TradingCore.cpp:209
std::mutex mExecutionCallbackMutex
Definition TradingCore.h:106
std::optional< common::Order > getOrder(common::OrderID orderId) const
Definition TradingCore.cpp:274
TradingCore()
Definition TradingCore.cpp:18
MarketDataPublisher & getMarketDataPublisher()
Definition TradingCore.cpp:252
virtual void subscribeToExecutions(ExecutionReportCallback callback)
Definition TradingCore.cpp:219
virtual void submitCommand(std::unique_ptr< Command > command) const
Definition TradingCore.cpp:140
std::unique_ptr< TradeIDGenerator > mTradeIDGenerator
Definition TradingCore.h:101
void stop()
Definition TradingCore.cpp:110
void start()
Definition TradingCore.cpp:100
void setPartition(common::Instrument instrument, std::unique_ptr< Partition > partition)
Definition TradingCore.cpp:303
std::unique_ptr< data::TradeIDRepository > mTradeIDRepo
Definition TradingCore.h:100
data::DatabaseWorker * mDatabaseWorker
Definition TradingCore.h:97
static TradingCore & getInstance()
Definition TradingCore.cpp:257
const ExecutionReportCallback & getExecutionReportCallback() const
Definition TradingCore.cpp:247
virtual ~TradingCore()
Definition TradingCore.cpp:94
std::unique_ptr< data::DatabaseWorker > mOwnedDatabaseWorker
Definition TradingCore.h:98
OrderIDGenerator * getOrderIDGenerator()
Definition TradingCore.cpp:204
data::DatabaseWorker * getDatabaseWorker() const
Definition TradingCore.cpp:214
void initPartitions()
Definition TradingCore.cpp:189
MarketDataPublisher mMarketDataPublisher
Definition TradingCore.h:107
Instrument
Represents the financial instruments available for trading.
Definition Instrument.h:17
@ COUNT
Helper to get the number of instruments.
uint64_t OrderID
A type alias for unique order identifiers.
Definition Types.h:134
uint64_t SessionID
A type alias for session identifiers.
Definition Types.h:142
Definition CommandType.h:7