BetaTrader
A HFT Eco-System
Loading...
Searching...
No Matches
Partition.h
Go to the documentation of this file.
1
11#pragma once
12#include "Command.h"
13#include "Matcher.h"
14#include "OrderBook.h"
15#include "OrderManager.h"
16#include "RiskManager.h"
17#include "WorkerThread.h"
20#include "rigtorp/SPSCQueue.h"
21#include "MarketDataPublisher.h"
22#include <atomic>
23#include <future>
24#include <memory>
25
26namespace trading_core {
32 class Partition {
33 public:
35 data::DatabaseWorker* databaseWorker,
36 TradeIDGenerator* tradeIDGenerator,
37 MarketDataPublisher& publisher);
38
40 data::DatabaseWorker* databaseWorker,
41 TradeIDGenerator* tradeIDGenerator,
42 MarketDataPublisher& publisher,
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);
49
50 ~Partition();
51
52 void start();
53
54 void stop();
55
57
58 void enqueue(std::unique_ptr<Command> command);
59
60 size_t getQueueSize() const;
61
62 void waitReady();
63
64 [[nodiscard]] common::Symbol getSymbol() const;
65
66 [[nodiscard]] const data::DatabaseWorker* getDatabaseWorker() const;
67
68 [[nodiscard]] const TradeIDGenerator* getTradeIDGenerator() const;
69
70 [[nodiscard]] const OrderManager* getOrderManager() const;
71
72 [[nodiscard]] const OrderBook* getOrderBook() const;
73
74 [[nodiscard]] const Matcher* getMatcher() const;
75
76 [[nodiscard]] const RiskManager* getRiskManager() const;
77
78 [[nodiscard]] const data::OrderRepository* getOrderRepository() const;
79
80 [[nodiscard]] const WorkerThread* getWorker() const;
81
82 private:
83 void init();
84
85 rigtorp::SPSCQueue<std::unique_ptr<Command>> mCommandQueue;
86 std::atomic<bool> mAcceptingCommands{true};
91
92 std::unique_ptr<data::TradeRepository> mTradeRepository;
93 std::unique_ptr<data::OrderRepository> mOrderRepository;
94 std::unique_ptr<OrderManager> mOrderManager;
95 std::unique_ptr<OrderBook> mOrderBook;
96 std::unique_ptr<Matcher> mMatcher;
97 std::unique_ptr<RiskManager> mRiskManager;
98 std::unique_ptr<WorkerThread> mWorker;
99 std::future<void> mReadyFuture;
100 };
101} // namespace trading_core
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