Slick OrderBook 1.1.0
High-Performance C++23 OrderBook Library
Loading...
Searching...
No Matches
slick::orderbook::ObserverManager Class Reference

Observer manager for notifying multiple observers Uses type erasure to support both concept-based and inheritance-based observers. More...

#include <observer.hpp>

Collaboration diagram for slick::orderbook::ObserverManager:

Public Member Functions

 ObserverManager ()=default
 
 ~ObserverManager ()=default
 
 ObserverManager (const ObserverManager &)=delete
 
ObserverManager & operator= (const ObserverManager &)=delete
 
 ObserverManager (ObserverManager &&) noexcept=default
 
ObserverManager & operator= (ObserverManager &&) noexcept=default
 
void addObserver (std::shared_ptr< IOrderBookObserver > observer)
 Add an observer.
 
bool removeObserver (const std::shared_ptr< IOrderBookObserver > &observer)
 Remove an observer.
 
void clearObservers () noexcept
 Clear all observers.
 
std::size_t observerCount () const noexcept
 Get number of observers.
 
void notifyPriceLevelUpdate (const PriceLevelUpdate &update) const
 Notify all observers of price level update.
 
void notifyOrderUpdate (const OrderUpdate &update) const
 Notify all observers of order update.
 
void notifyTrade (const Trade &trade) const
 Notify all observers of trade.
 
void notifyTopOfBookUpdate (const TopOfBook &tob) const
 Notify all observers of top-of-book update.
 
void notifySnapshotBegin (SymbolId symbol, uint64_t seq_num, Timestamp timestamp) const
 Notify all observers that snapshot processing is beginning.
 
void notifySnapshotEnd (SymbolId symbol, uint64_t seq_num, Timestamp timestamp) const
 Notify all observers that snapshot processing is complete.
 

Detailed Description

Observer manager for notifying multiple observers Uses type erasure to support both concept-based and inheritance-based observers.

Definition at line 52 of file observer.hpp.

Constructor & Destructor Documentation

◆ ObserverManager() [1/3]

slick::orderbook::ObserverManager::ObserverManager ( )
default

◆ ~ObserverManager()

slick::orderbook::ObserverManager::~ObserverManager ( )
default

◆ ObserverManager() [2/3]

slick::orderbook::ObserverManager::ObserverManager ( const ObserverManager &  )
delete

◆ ObserverManager() [3/3]

slick::orderbook::ObserverManager::ObserverManager ( ObserverManager &&  )
defaultnoexcept

Member Function Documentation

◆ addObserver()

void slick::orderbook::ObserverManager::addObserver ( std::shared_ptr< IOrderBookObserver >  observer)
inline

Add an observer.

Parameters
observerShared pointer to observer (can be IOrderBookObserver or concept-based)

Definition at line 65 of file observer.hpp.

◆ clearObservers()

void slick::orderbook::ObserverManager::clearObservers ( )
inlinenoexcept

Clear all observers.

Definition at line 84 of file observer.hpp.

◆ notifyOrderUpdate()

void slick::orderbook::ObserverManager::notifyOrderUpdate ( const OrderUpdate &  update) const
inline

◆ notifyPriceLevelUpdate()

void slick::orderbook::ObserverManager::notifyPriceLevelUpdate ( const PriceLevelUpdate &  update) const
inline

◆ notifySnapshotBegin()

void slick::orderbook::ObserverManager::notifySnapshotBegin ( SymbolId  symbol,
uint64_t  seq_num,
Timestamp  timestamp 
) const
inline

Notify all observers that snapshot processing is beginning.

Definition at line 122 of file observer.hpp.

Referenced by slick::orderbook::OrderBookL2::emitSnapshot(), and slick::orderbook::OrderBookL3::emitSnapshot().

◆ notifySnapshotEnd()

void slick::orderbook::ObserverManager::notifySnapshotEnd ( SymbolId  symbol,
uint64_t  seq_num,
Timestamp  timestamp 
) const
inline

Notify all observers that snapshot processing is complete.

Definition at line 129 of file observer.hpp.

Referenced by slick::orderbook::OrderBookL2::emitSnapshot(), and slick::orderbook::OrderBookL3::emitSnapshot().

◆ notifyTopOfBookUpdate()

void slick::orderbook::ObserverManager::notifyTopOfBookUpdate ( const TopOfBook &  tob) const
inline

Notify all observers of top-of-book update.

Definition at line 115 of file observer.hpp.

Referenced by slick::orderbook::OrderBookL2::notifyTopOfBookIfChanged(), and slick::orderbook::OrderBookL3::notifyTopOfBookIfChanged().

◆ notifyTrade()

void slick::orderbook::ObserverManager::notifyTrade ( const Trade &  trade) const
inline

Notify all observers of trade.

Definition at line 108 of file observer.hpp.

Referenced by slick::orderbook::OrderBookL3::notifyTrade().

◆ observerCount()

std::size_t slick::orderbook::ObserverManager::observerCount ( ) const
inlinenoexcept

Get number of observers.

Definition at line 89 of file observer.hpp.

◆ operator=() [1/2]

ObserverManager & slick::orderbook::ObserverManager::operator= ( const ObserverManager &  )
delete

◆ operator=() [2/2]

ObserverManager & slick::orderbook::ObserverManager::operator= ( ObserverManager &&  )
defaultnoexcept

◆ removeObserver()

bool slick::orderbook::ObserverManager::removeObserver ( const std::shared_ptr< IOrderBookObserver > &  observer)
inline

Remove an observer.

Parameters
observerObserver to remove
Returns
true if observer was found and removed

Definition at line 74 of file observer.hpp.


The documentation for this class was generated from the following file: