FIX 4.0 Demo 1.0
Loading...
Searching...
No Matches
fix40::MdAdapter Class Referenceabstract

行情适配器抽象接口 More...

#include <md_adapter.hpp>

Inheritance diagram for fix40::MdAdapter:
Inheritance graph
Collaboration diagram for fix40::MdAdapter:
Collaboration graph

Public Member Functions

virtual ~MdAdapter ()=default
 虚析构函数
 
virtual bool start ()=0
 启动适配器
 
virtual void stop ()=0
 停止适配器
 
virtual bool isRunning () const =0
 检查适配器是否正在运行
 
virtual MdAdapterState getState () const =0
 获取当前状态
 
virtual bool subscribe (const std::vector< std::string > &instruments)=0
 订阅合约行情
 
virtual bool unsubscribe (const std::vector< std::string > &instruments)=0
 退订合约行情
 
virtual void setStateCallback (StateCallback callback)=0
 设置状态变更回调
 
virtual std::string getName () const =0
 获取适配器名称
 
virtual std::string getTradingDay () const =0
 获取交易日
 

Protected Member Functions

 MdAdapter (moodycamel::BlockingConcurrentQueue< MarketData > &queue)
 构造函数
 
void pushMarketData (const MarketData &data)
 将行情数据写入队列
 
void pushMarketData (MarketData &&data)
 将行情数据写入队列(移动语义)
 

Protected Attributes

moodycamel::BlockingConcurrentQueue< MarketData > & marketDataQueue_
 行情数据输出队列
 

Detailed Description

行情适配器抽象接口

所有行情数据源都应实现此接口。适配器的职责:

  1. 管理与数据源的连接
  2. 处理登录/登出
  3. 订阅/退订合约
  4. 将收到的行情转换为 MarketData 格式
  5. MarketData 写入无锁队列供下游消费
线程模型
  • 适配器内部可能有自己的回调线程(如 CTP)
  • 所有行情数据通过无锁队列传递,避免阻塞回调线程
  • start()/stop() 应由主线程调用
使用示例
auto adapter = std::make_unique<MockMdAdapter>(mdQueue);
adapter->setStateCallback([](MdAdapterState state, const std::string& msg) {
LOG() << "State: " << static_cast<int>(state) << " - " << msg;
});
adapter->start();
adapter->subscribe({"IF2401", "IC2401"});
// 消费行情
MarketData md;
while (mdQueue.wait_dequeue_timed(md, std::chrono::milliseconds(100))) {
process(md);
}
adapter->stop();
Definition concurrentqueue.h:768
#define LOG()
日志输出宏
Definition logger.hpp:138
MdAdapterState
行情适配器状态
Definition md_adapter.hpp:24

Constructor & Destructor Documentation

◆ ~MdAdapter()

virtual fix40::MdAdapter::~MdAdapter ( )
virtualdefault

虚析构函数

◆ MdAdapter()

fix40::MdAdapter::MdAdapter ( moodycamel::BlockingConcurrentQueue< MarketData > &  queue)
inlineexplicitprotected

构造函数

Parameters
queue行情数据输出队列

Member Function Documentation

◆ getName()

virtual std::string fix40::MdAdapter::getName ( ) const
pure virtual

获取适配器名称

Returns
std::string 适配器名称(如 "CTP", "Mock")

Implemented in fix40::MockMdAdapter.

◆ getState()

virtual MdAdapterState fix40::MdAdapter::getState ( ) const
pure virtual

获取当前状态

Returns
MdAdapterState 当前状态

Implemented in fix40::MockMdAdapter.

◆ getTradingDay()

virtual std::string fix40::MdAdapter::getTradingDay ( ) const
pure virtual

获取交易日

Returns
std::string 交易日 (YYYYMMDD),未连接时返回空

Implemented in fix40::MockMdAdapter.

◆ isRunning()

virtual bool fix40::MdAdapter::isRunning ( ) const
pure virtual

检查适配器是否正在运行

Returns
true 正在运行
false 已停止

Implemented in fix40::MockMdAdapter.

◆ pushMarketData() [1/2]

void fix40::MdAdapter::pushMarketData ( const MarketData data)
inlineprotected

将行情数据写入队列

Parameters
data行情数据

子类在收到行情后调用此方法将数据写入队列。

Here is the call graph for this function:

◆ pushMarketData() [2/2]

void fix40::MdAdapter::pushMarketData ( MarketData &&  data)
inlineprotected

将行情数据写入队列(移动语义)

Parameters
data行情数据
Here is the call graph for this function:

◆ setStateCallback()

virtual void fix40::MdAdapter::setStateCallback ( StateCallback  callback)
pure virtual

设置状态变更回调

Parameters
callback回调函数

Implemented in fix40::MockMdAdapter.

◆ start()

virtual bool fix40::MdAdapter::start ( )
pure virtual

启动适配器

Returns
true 启动成功
false 启动失败

启动后适配器会尝试连接数据源并登录。 状态变化通过 StateCallback 通知。

Implemented in fix40::MockMdAdapter.

◆ stop()

virtual void fix40::MdAdapter::stop ( )
pure virtual

停止适配器

断开与数据源的连接,释放资源。 调用后适配器进入 DISCONNECTED 状态。

Implemented in fix40::MockMdAdapter.

◆ subscribe()

virtual bool fix40::MdAdapter::subscribe ( const std::vector< std::string > &  instruments)
pure virtual

订阅合约行情

Parameters
instruments合约代码列表
Returns
true 订阅请求已发送
false 订阅失败(如未连接)
Note
订阅结果通过 StateCallback 异步通知

Implemented in fix40::MockMdAdapter.

◆ unsubscribe()

virtual bool fix40::MdAdapter::unsubscribe ( const std::vector< std::string > &  instruments)
pure virtual

退订合约行情

Parameters
instruments合约代码列表
Returns
true 退订请求已发送
false 退订失败

Implemented in fix40::MockMdAdapter.

Member Data Documentation

◆ marketDataQueue_

moodycamel::BlockingConcurrentQueue<MarketData>& fix40::MdAdapter::marketDataQueue_
protected

行情数据输出队列


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