FIX 4.0 Demo 1.0
Loading...
Searching...
No Matches
md_adapter.hpp
Go to the documentation of this file.
1
9#pragma once
10
11#include <string>
12#include <vector>
13#include <functional>
14#include <atomic>
17
18namespace fix40 {
19
24enum class MdAdapterState {
27 CONNECTED,
29 READY,
30 ERROR
31};
32
38using StateCallback = std::function<void(MdAdapterState state, const std::string& message)>;
39
77class MdAdapter {
78public:
82 virtual ~MdAdapter() = default;
83
84 // =========================================================================
85 // 生命周期管理
86 // =========================================================================
87
96 virtual bool start() = 0;
97
104 virtual void stop() = 0;
105
111 virtual bool isRunning() const = 0;
112
117 virtual MdAdapterState getState() const = 0;
118
119 // =========================================================================
120 // 订阅管理
121 // =========================================================================
122
131 virtual bool subscribe(const std::vector<std::string>& instruments) = 0;
132
139 virtual bool unsubscribe(const std::vector<std::string>& instruments) = 0;
140
141 // =========================================================================
142 // 回调设置
143 // =========================================================================
144
149 virtual void setStateCallback(StateCallback callback) = 0;
150
151 // =========================================================================
152 // 信息查询
153 // =========================================================================
154
159 virtual std::string getName() const = 0;
160
165 virtual std::string getTradingDay() const = 0;
166
167protected:
174
181 void pushMarketData(const MarketData& data) {
183 }
184
190 marketDataQueue_.enqueue(std::move(data));
191 }
192
195};
196
197} // namespace fix40
行情适配器抽象接口
Definition md_adapter.hpp:77
virtual void setStateCallback(StateCallback callback)=0
设置状态变更回调
virtual std::string getTradingDay() const =0
获取交易日
virtual bool start()=0
启动适配器
void pushMarketData(const MarketData &data)
将行情数据写入队列
Definition md_adapter.hpp:181
MdAdapter(moodycamel::BlockingConcurrentQueue< MarketData > &queue)
构造函数
Definition md_adapter.hpp:172
virtual bool unsubscribe(const std::vector< std::string > &instruments)=0
退订合约行情
virtual bool subscribe(const std::vector< std::string > &instruments)=0
订阅合约行情
virtual std::string getName() const =0
获取适配器名称
virtual MdAdapterState getState() const =0
获取当前状态
virtual ~MdAdapter()=default
虚析构函数
void pushMarketData(MarketData &&data)
将行情数据写入队列(移动语义)
Definition md_adapter.hpp:189
virtual bool isRunning() const =0
检查适配器是否正在运行
virtual void stop()=0
停止适配器
moodycamel::BlockingConcurrentQueue< MarketData > & marketDataQueue_
行情数据输出队列
Definition md_adapter.hpp:194
Definition concurrentqueue.h:768
bool enqueue(T const &item)
Definition concurrentqueue.h:995
行情数据结构定义
Definition matching_engine.hpp:23
MdAdapterState
行情适配器状态
Definition md_adapter.hpp:24
@ READY
就绪(已登录,可订阅)
@ CONNECTED
已连接(未登录)
@ ERROR
错误状态
std::function< void(MdAdapterState state, const std::string &message)> StateCallback
状态变更回调类型
Definition md_adapter.hpp:38
行情数据结构体
Definition market_data.hpp:55