IParserApi.h
source: wtcpp/folder98/folder01/folder3/folder3/file01.md
Note
CTP行情接口实现: “ParserCTP/ParserCTP.h”
/*!
* \file IParserApi.h
* \project WonderTrader
*
* \author Wesley
* \date 2020/03/30
*
* \brief 行情解析模块接口定义文件
*/
#pragma once
#include <string>
#include <stdint.h>
#include "WTSTypes.h"
#include "FasterDefs.h"
typedef faster_hashset<std::string> CodeSet;
NS_WTP_BEGIN
class WTSTickData;
class WTSOrdDtlData;
class WTSOrdQueData;
class WTSTransData;
class WTSVariant;
class WTSArray;
class IBaseDataMgr;
/*
* 行情解析模块回调接口
*/
class IParserSpi
{
public:
/*
* 处理模块事件
* @e 事件类型,如连接、断开、登录、登出
* @ec 错误码,0为没有错误
*/
virtual void handleEvent(WTSParserEvent e, int32_t ec){}
/*
* 处理合约列表
* @aySymbols 合约列表,基础元素为WTSContractInfo,WTSArray的用法请参考定义
*/
virtual void handleSymbolList(const WTSArray* aySymbols) = 0;
/*
* 处理实时行情
* @quote 实时行情
* @procFlag 处理标记,0-切片行情,无需处理(ParserUDP);1-完整快照,需要切片(国内各路通道);2-极简快照,需要缓存累加(主要针对日线、tick,m1和m5都是自动累加的,虚拟货币行情)
*/
virtual void handleQuote(WTSTickData *quote, uint32_t procFlag) = 0;
/*
* 处理委托队列数据(股票level2)
* @ordQueData 委托对垒数据
*/
virtual void handleOrderQueue(WTSOrdQueData* ordQueData){}
/*
* 处理逐笔委托数据(股票level2)
* @ordDetailData 逐笔委托数据
*/
virtual void handleOrderDetail(WTSOrdDtlData* ordDetailData){}
/*
* 处理逐笔成交数据
* @transData 逐笔成交数据
*/
virtual void handleTransaction(WTSTransData* transData){}
/*
* 处理解析模块的日志
* @ll 日志级别
* @message 日志内容
*/
virtual void handleParserLog(WTSLogLevel ll, const char* message) = 0;
public:
virtual IBaseDataMgr* getBaseDataMgr() = 0;
};
/*
* 行情解析模块接口
*/
class IParserApi
{
public:
virtual ~IParserApi(){}
public:
/*
* 初始化解析模块
* @config 模块配置
* 返回值 是否初始化成功
*/
virtual bool init(WTSVariant* config) = 0;
/*
* 释放解析模块
* 用于退出时
*/
virtual void release() = 0;
/*
* 开始连接服务器
* @返回值 连接命令是否发送成功
*/
virtual bool connect() = 0;
/*
* 断开连接
* @返回值 命令是否发送成功
*/
virtual bool disconnect() = 0;
/*
* 是否已连接
* @返回值 是否已连接
*/
virtual bool isConnected() = 0;
/*
* 订阅合约列表
*/
virtual void subscribe(const CodeSet& setCodes) = 0;
/*
* 退订合约列表
*/
virtual void unsubscribe(const CodeSet& setCodes) = 0;
/*
* 注册回调接口
*/
virtual void registerSpi(IParserSpi* listener) = 0;
};
NS_WTP_END
//获取IDataMgr的函数指针类型
typedef wtp::IParserApi* (*FuncCreateParser)();
typedef void(*FuncDeleteParser)(wtp::IParserApi* &parser);