20#include "rigtorp/SPSCQueue.h"
43 std::unique_ptr<data::TradeRepository> tradeRepository,
44 std::unique_ptr<data::OrderRepository> orderRepository,
45 std::unique_ptr<OrderManager> orderManager,
46 std::unique_ptr<OrderBook> orderBook,
47 std::unique_ptr<Matcher> matcher,
48 std::unique_ptr<RiskManager> riskManager);
58 void enqueue(std::unique_ptr<Command> command);
Repository interface for persisting and loading orders.
Risk management hooks for pre-checks and post-trade updates.
Repository interface for persisting trades.
Worker thread that consumes command queue and executes trading logic.
Executes database tasks asynchronously.
Definition DatabaseWorker.h:22
Persists and retrieves common::Order objects.
Definition OrderRepository.h:20
Definition MarketDataPublisher.h:12
The matching engine that pairs buy and sell orders.
Definition Matcher.h:23
Represents the order book for a single financial instrument.
Definition OrderBook.h:22
Manages all the orders in the system.
Definition OrderManager.h:19
Encapsulates all components needed to process commands for a symbol.
Definition Partition.h:32
std::unique_ptr< data::TradeRepository > mTradeRepository
Definition Partition.h:92
void stopAcceptingCommands()
Definition Partition.cpp:106
std::unique_ptr< OrderManager > mOrderManager
Definition Partition.h:94
const data::DatabaseWorker * getDatabaseWorker() const
Definition Partition.cpp:139
void start()
Definition Partition.cpp:74
common::Symbol mSymbol
Definition Partition.h:87
const TradeIDGenerator * getTradeIDGenerator() const
Definition Partition.cpp:144
std::unique_ptr< WorkerThread > mWorker
Definition Partition.h:98
std::unique_ptr< OrderBook > mOrderBook
Definition Partition.h:95
const Matcher * getMatcher() const
Definition Partition.cpp:159
TradeIDGenerator * mTradeIDGenerator
Definition Partition.h:89
std::unique_ptr< Matcher > mMatcher
Definition Partition.h:96
const WorkerThread * getWorker() const
Definition Partition.cpp:174
std::atomic< bool > mAcceptingCommands
Definition Partition.h:86
const data::OrderRepository * getOrderRepository() const
Definition Partition.cpp:169
std::unique_ptr< data::OrderRepository > mOrderRepository
Definition Partition.h:93
rigtorp::SPSCQueue< std::unique_ptr< Command > > mCommandQueue
Definition Partition.h:85
void enqueue(std::unique_ptr< Command > command)
Definition Partition.cpp:111
MarketDataPublisher & mPublisher
Definition Partition.h:90
const RiskManager * getRiskManager() const
Definition Partition.cpp:164
const OrderManager * getOrderManager() const
Definition Partition.cpp:149
common::Symbol getSymbol() const
Definition Partition.cpp:134
void stop()
Definition Partition.cpp:96
void waitReady()
Definition Partition.cpp:124
const OrderBook * getOrderBook() const
Definition Partition.cpp:154
~Partition()
Definition Partition.cpp:67
std::unique_ptr< RiskManager > mRiskManager
Definition Partition.h:97
data::DatabaseWorker * mDatabaseWorker
Definition Partition.h:88
void init()
Definition Partition.cpp:46
size_t getQueueSize() const
Definition Partition.cpp:129
std::future< void > mReadyFuture
Definition Partition.h:99
Performs risk validation and updates after trade execution.
Definition RiskManager.h:21
A thread-safe, database-aware generator for unique trade IDs.
Definition TradeIDGenerator.h:15
Background worker which processes batched commands.
Definition WorkerThread.h:31
Instrument
Represents the financial instruments available for trading.
Definition Instrument.h:17
Definition CancelOrder.h:10