BetaTrader
A HFT Eco-System
Loading...
Searching...
No Matches
MarketDataPublisher.h
Go to the documentation of this file.
1#pragma once
2
3#include "common/Types.h"
6#include <functional>
7#include <map>
8#include <vector>
9#include <shared_mutex>
10
11namespace trading_core {
12
21 public:
22 using SnapshotCallback = std::function<void(const fix::MarketDataSnapshotFullRefresh&)>;
23 using IncrementalCallback = std::function<void(const fix::MarketDataIncrementalRefresh&)>;
24
25 void addSubscription(common::Symbol symbol, common::SessionID sessionId);
28
29 virtual void publishSnapshot(const fix::MarketDataSnapshotFullRefresh& snapshot);
30 virtual void publishIncremental(const fix::MarketDataIncrementalRefresh& refresh);
31
34
37
38 private:
39 mutable std::shared_mutex mMutex;
40 std::map<common::Symbol, std::vector<common::SessionID>> mSubscriptions;
41 std::vector<SnapshotCallback> mSessionSnapshotCallbacks;
42 std::vector<IncrementalCallback> mSessionIncrementalCallbacks;
43 std::vector<SnapshotCallback> mGeneralSnapshotCallbacks;
44 std::vector<IncrementalCallback> mGeneralIncrementalCallbacks;
45 };
46
47} // namespace trading_core
Manages market data subscriptions and broadcasts updates.
Definition MarketDataPublisher.h:20
std::vector< IncrementalCallback > mGeneralIncrementalCallbacks
Definition MarketDataPublisher.h:44
std::function< void(const fix::MarketDataIncrementalRefresh &)> IncrementalCallback
Definition MarketDataPublisher.h:23
virtual void publishIncremental(const fix::MarketDataIncrementalRefresh &refresh)
Definition MarketDataPublisher.cpp:70
void removeSubscription(common::Symbol symbol, common::SessionID sessionId)
Definition MarketDataPublisher.cpp:19
void subscribeToIncrementals(IncrementalCallback callback)
Definition MarketDataPublisher.cpp:110
std::shared_mutex mMutex
Definition MarketDataPublisher.h:39
std::map< common::Symbol, std::vector< common::SessionID > > mSubscriptions
Definition MarketDataPublisher.h:40
std::vector< SnapshotCallback > mSessionSnapshotCallbacks
Definition MarketDataPublisher.h:41
std::vector< SnapshotCallback > mGeneralSnapshotCallbacks
Definition MarketDataPublisher.h:43
void addGeneralIncrementalSubscriber(IncrementalCallback callback)
Definition MarketDataPublisher.cpp:116
virtual void publishSnapshot(const fix::MarketDataSnapshotFullRefresh &snapshot)
Definition MarketDataPublisher.cpp:49
void subscribeToSnapshots(SnapshotCallback callback)
Definition MarketDataPublisher.cpp:104
void addGeneralSnapshotSubscriber(SnapshotCallback callback)
Definition MarketDataPublisher.cpp:122
std::function< void(const fix::MarketDataSnapshotFullRefresh &)> SnapshotCallback
Definition MarketDataPublisher.h:22
std::vector< IncrementalCallback > mSessionIncrementalCallbacks
Definition MarketDataPublisher.h:42
void addSubscription(common::Symbol symbol, common::SessionID sessionId)
Definition MarketDataPublisher.cpp:8
Instrument
Represents the financial instruments available for trading.
Definition Instrument.h:17
uint64_t SessionID
A type alias for session identifiers.
Definition Types.h:142
Definition CommandType.h:7
Definition MarketDataIncrementalRefresh.h:22
Definition MarketDataSnapshotFullRefresh.h:21