|
Slick OrderBook 1.1.0
High-Performance C++23 OrderBook Library
|
Multi-symbol OrderBook Manager. More...
#include <orderbook_manager.hpp>
Public Types | |
| using | OrderBookPtr = std::shared_ptr< OrderBookT > |
| using | SymbolMap = detail::FlatMap< SymbolId, OrderBookPtr > |
Public Member Functions | |
| OrderBookManager (std::size_t initial_symbol_capacity=64) | |
| Constructor. | |
| ~OrderBookManager ()=default | |
| Destructor. | |
| OrderBookManager (const OrderBookManager &)=delete | |
| OrderBookManager & | operator= (const OrderBookManager &)=delete |
| OrderBookManager (OrderBookManager &&other) noexcept | |
| OrderBookManager & | operator= (OrderBookManager &&other) noexcept |
| OrderBookT * | getOrCreateOrderBook (SymbolId symbol) |
| Get existing orderbook or create new one if it doesn't exist Thread-safe: Uses shared_mutex for symbol map access Lifetime: pointer is invalidated by removeOrderBook(symbol)/clear() (see class docs) | |
| const OrderBookT * | getOrderBook (SymbolId symbol) const |
| Get existing orderbook (read-only access) Thread-safe: Uses shared lock for read-only access Lifetime: pointer is invalidated by removeOrderBook(symbol)/clear() (see class docs) | |
| OrderBookT * | getOrderBook (SymbolId symbol) |
| Get existing orderbook (mutable access) Thread-safe: Uses shared lock for read-only access to map Lifetime: pointer is invalidated by removeOrderBook(symbol)/clear() (see class docs) | |
| std::shared_ptr< OrderBookT > | getOrCreateSharedOrderBook (SymbolId symbol) |
| Get existing orderbook or create new one, as a retaining handle Thread-safe; the orderbook stays alive while the handle is held, even if removeOrderBook()/clear() runs concurrently. | |
| std::shared_ptr< OrderBookT > | getSharedOrderBook (SymbolId symbol) const |
| Get existing orderbook as a retaining handle Thread-safe; the orderbook stays alive while the handle is held, even if removeOrderBook()/clear() runs concurrently. | |
| bool | hasSymbol (SymbolId symbol) const |
| Check if symbol exists in manager Thread-safe: Uses shared lock. | |
| bool | removeOrderBook (SymbolId symbol) |
| Remove orderbook for a symbol Thread-safe: Uses exclusive lock. | |
| std::vector< SymbolId > | getSymbols () const |
| Get all active symbol IDs Thread-safe: Uses shared lock. | |
| std::size_t | symbolCount () const |
| Get number of active symbols Thread-safe: Uses shared lock. | |
| void | clear () |
| Clear all orderbooks Thread-safe: Uses exclusive lock. | |
| void | reserve (std::size_t capacity) |
| Reserve capacity for expected number of symbols Not thread-safe: Should be called before concurrent access begins. | |
Multi-symbol OrderBook Manager.
Manages multiple orderbook instances (L2 or L3) across different symbols. Thread-safe for concurrent access to different symbols.
Features:
Thread Safety:
Orderbook Lifetime:
Template Parameter:
| OrderBookT | Either OrderBookL2 or OrderBookL3 |
Usage:
Definition at line 61 of file orderbook_manager.hpp.
| using slick::orderbook::OrderBookManager< OrderBookT >::OrderBookPtr = std::shared_ptr<OrderBookT> |
Definition at line 63 of file orderbook_manager.hpp.
| using slick::orderbook::OrderBookManager< OrderBookT >::SymbolMap = detail::FlatMap<SymbolId, OrderBookPtr> |
Definition at line 64 of file orderbook_manager.hpp.
|
explicit |
Constructor.
| initial_symbol_capacity | Initial capacity for symbol map |
Definition at line 9 of file orderbook_manager_impl.hpp.
|
default |
Destructor.
|
delete |
|
noexcept |
Definition at line 20 of file orderbook_manager_impl.hpp.
| void slick::orderbook::OrderBookManager< OrderBookT >::clear | ( | ) |
Clear all orderbooks Thread-safe: Uses exclusive lock.
Definition at line 127 of file orderbook_manager_impl.hpp.
| OrderBookT * slick::orderbook::OrderBookManager< OrderBookT >::getOrCreateOrderBook | ( | SymbolId | symbol | ) |
Get existing orderbook or create new one if it doesn't exist Thread-safe: Uses shared_mutex for symbol map access Lifetime: pointer is invalidated by removeOrderBook(symbol)/clear() (see class docs)
| symbol | Symbol identifier |
Definition at line 71 of file orderbook_manager_impl.hpp.
| std::shared_ptr< OrderBookT > slick::orderbook::OrderBookManager< OrderBookT >::getOrCreateSharedOrderBook | ( | SymbolId | symbol | ) |
Get existing orderbook or create new one, as a retaining handle Thread-safe; the orderbook stays alive while the handle is held, even if removeOrderBook()/clear() runs concurrently.
| symbol | Symbol identifier |
Definition at line 76 of file orderbook_manager_impl.hpp.
| OrderBookT * slick::orderbook::OrderBookManager< OrderBookT >::getOrderBook | ( | SymbolId | symbol | ) |
Get existing orderbook (mutable access) Thread-safe: Uses shared lock for read-only access to map Lifetime: pointer is invalidated by removeOrderBook(symbol)/clear() (see class docs)
| symbol | Symbol identifier |
Definition at line 86 of file orderbook_manager_impl.hpp.
| const OrderBookT * slick::orderbook::OrderBookManager< OrderBookT >::getOrderBook | ( | SymbolId | symbol | ) | const |
Get existing orderbook (read-only access) Thread-safe: Uses shared lock for read-only access Lifetime: pointer is invalidated by removeOrderBook(symbol)/clear() (see class docs)
| symbol | Symbol identifier |
Definition at line 81 of file orderbook_manager_impl.hpp.
| std::shared_ptr< OrderBookT > slick::orderbook::OrderBookManager< OrderBookT >::getSharedOrderBook | ( | SymbolId | symbol | ) | const |
Get existing orderbook as a retaining handle Thread-safe; the orderbook stays alive while the handle is held, even if removeOrderBook()/clear() runs concurrently.
| symbol | Symbol identifier |
Definition at line 91 of file orderbook_manager_impl.hpp.
| std::vector< SymbolId > slick::orderbook::OrderBookManager< OrderBookT >::getSymbols | ( | ) | const |
Get all active symbol IDs Thread-safe: Uses shared lock.
Definition at line 108 of file orderbook_manager_impl.hpp.
| bool slick::orderbook::OrderBookManager< OrderBookT >::hasSymbol | ( | SymbolId | symbol | ) | const |
Check if symbol exists in manager Thread-safe: Uses shared lock.
| symbol | Symbol identifier |
Definition at line 96 of file orderbook_manager_impl.hpp.
|
delete |
|
noexcept |
Definition at line 27 of file orderbook_manager_impl.hpp.
| bool slick::orderbook::OrderBookManager< OrderBookT >::removeOrderBook | ( | SymbolId | symbol | ) |
Remove orderbook for a symbol Thread-safe: Uses exclusive lock.
| symbol | Symbol identifier |
Definition at line 102 of file orderbook_manager_impl.hpp.
| void slick::orderbook::OrderBookManager< OrderBookT >::reserve | ( | std::size_t | capacity | ) |
Reserve capacity for expected number of symbols Not thread-safe: Should be called before concurrent access begins.
| capacity | Expected number of symbols |
Definition at line 133 of file orderbook_manager_impl.hpp.
| std::size_t slick::orderbook::OrderBookManager< OrderBookT >::symbolCount | ( | ) | const |
Get number of active symbols Thread-safe: Uses shared lock.
Definition at line 121 of file orderbook_manager_impl.hpp.