|
| 1 | +///////////////////////////////////////////////////////////////////////// |
| 2 | +///@system 新一代交易所系统 |
| 3 | +///@company 上海期货信息技术有限公司 |
| 4 | +///@file ThostFtdcMdApi.h |
| 5 | +///@brief 定义了客户端接口 |
| 6 | +///@history |
| 7 | +///20060106 赵鸿昊 创建该文件 |
| 8 | +///////////////////////////////////////////////////////////////////////// |
| 9 | + |
| 10 | +#if !defined(THOST_FTDCMDAPI_H) |
| 11 | +#define THOST_FTDCMDAPI_H |
| 12 | + |
| 13 | +#if _MSC_VER > 1000 |
| 14 | +#pragma once |
| 15 | +#endif // _MSC_VER > 1000 |
| 16 | + |
| 17 | +#include "ThostFtdcUserApiStruct.h" |
| 18 | + |
| 19 | +#if defined(ISLIB) && defined(WIN32) |
| 20 | +#ifdef LIB_MD_API_EXPORT |
| 21 | +#define MD_API_EXPORT __declspec(dllexport) |
| 22 | +#else |
| 23 | +#define MD_API_EXPORT __declspec(dllimport) |
| 24 | +#endif |
| 25 | +#else |
| 26 | +#define MD_API_EXPORT |
| 27 | +#endif |
| 28 | + |
| 29 | +class CThostFtdcMdSpi |
| 30 | +{ |
| 31 | +public: |
| 32 | + ///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。 |
| 33 | + virtual void OnFrontConnected(){}; |
| 34 | + |
| 35 | + ///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。 |
| 36 | + ///@param nReason 错误原因 |
| 37 | + /// 0x1001 网络读失败 |
| 38 | + /// 0x1002 网络写失败 |
| 39 | + /// 0x2001 接收心跳超时 |
| 40 | + /// 0x2002 发送心跳失败 |
| 41 | + /// 0x2003 收到错误报文 |
| 42 | + virtual void OnFrontDisconnected(int nReason){}; |
| 43 | + |
| 44 | + ///心跳超时警告。当长时间未收到报文时,该方法被调用。 |
| 45 | + ///@param nTimeLapse 距离上次接收报文的时间 |
| 46 | + virtual void OnHeartBeatWarning(int nTimeLapse){}; |
| 47 | + |
| 48 | + |
| 49 | + ///登录请求响应 |
| 50 | + virtual void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; |
| 51 | + |
| 52 | + ///登出请求响应 |
| 53 | + virtual void OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; |
| 54 | + |
| 55 | + ///错误应答 |
| 56 | + virtual void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; |
| 57 | + |
| 58 | + ///订阅行情应答 |
| 59 | + virtual void OnRspSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; |
| 60 | + |
| 61 | + ///取消订阅行情应答 |
| 62 | + virtual void OnRspUnSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; |
| 63 | + |
| 64 | + ///订阅询价应答 |
| 65 | + virtual void OnRspSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; |
| 66 | + |
| 67 | + ///取消订阅询价应答 |
| 68 | + virtual void OnRspUnSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; |
| 69 | + |
| 70 | + ///深度行情通知 |
| 71 | + virtual void OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData) {}; |
| 72 | + |
| 73 | + ///询价通知 |
| 74 | + virtual void OnRtnForQuoteRsp(CThostFtdcForQuoteRspField *pForQuoteRsp) {}; |
| 75 | +}; |
| 76 | + |
| 77 | +class MD_API_EXPORT CThostFtdcMdApi |
| 78 | +{ |
| 79 | +public: |
| 80 | + ///创建MdApi |
| 81 | + ///@param pszFlowPath 存贮订阅信息文件的目录,默认为当前目录 |
| 82 | + ///@return 创建出的UserApi |
| 83 | + ///modify for udp marketdata |
| 84 | + static CThostFtdcMdApi *CreateFtdcMdApi(const char *pszFlowPath = "", const bool bIsUsingUdp=false, const bool bIsMulticast=false); |
| 85 | + |
| 86 | + ///删除接口对象本身 |
| 87 | + ///@remark 不再使用本接口对象时,调用该函数删除接口对象 |
| 88 | + virtual void Release() = 0; |
| 89 | + |
| 90 | + ///初始化 |
| 91 | + ///@remark 初始化运行环境,只有调用后,接口才开始工作 |
| 92 | + virtual void Init() = 0; |
| 93 | + |
| 94 | + ///等待接口线程结束运行 |
| 95 | + ///@return 线程退出代码 |
| 96 | + virtual int Join() = 0; |
| 97 | + |
| 98 | + ///获取当前交易日 |
| 99 | + ///@retrun 获取到的交易日 |
| 100 | + ///@remark 只有登录成功后,才能得到正确的交易日 |
| 101 | + virtual const char *GetTradingDay() = 0; |
| 102 | + |
| 103 | + ///注册前置机网络地址 |
| 104 | + ///@param pszFrontAddress:前置机网络地址。 |
| 105 | + ///@remark 网络地址的格式为:“protocol://ipaddress:port”,如:”tcp://127.0.0.1:17001”。 |
| 106 | + ///@remark “tcp”代表传输协议,“127.0.0.1”代表服务器地址。”17001”代表服务器端口号。 |
| 107 | + virtual void RegisterFront(char *pszFrontAddress) = 0; |
| 108 | + |
| 109 | + ///注册名字服务器网络地址 |
| 110 | + ///@param pszNsAddress:名字服务器网络地址。 |
| 111 | + ///@remark 网络地址的格式为:“protocol://ipaddress:port”,如:”tcp://127.0.0.1:12001”。 |
| 112 | + ///@remark “tcp”代表传输协议,“127.0.0.1”代表服务器地址。”12001”代表服务器端口号。 |
| 113 | + ///@remark RegisterNameServer优先于RegisterFront |
| 114 | + virtual void RegisterNameServer(char *pszNsAddress) = 0; |
| 115 | + |
| 116 | + ///注册名字服务器用户信息 |
| 117 | + ///@param pFensUserInfo:用户信息。 |
| 118 | + virtual void RegisterFensUserInfo(CThostFtdcFensUserInfoField * pFensUserInfo) = 0; |
| 119 | + |
| 120 | + ///注册回调接口 |
| 121 | + ///@param pSpi 派生自回调接口类的实例 |
| 122 | + virtual void RegisterSpi(CThostFtdcMdSpi *pSpi) = 0; |
| 123 | + |
| 124 | + ///订阅行情。 |
| 125 | + ///@param ppInstrumentID 合约ID |
| 126 | + ///@param nCount 要订阅/退订行情的合约个数 |
| 127 | + ///@remark |
| 128 | + virtual int SubscribeMarketData(char *ppInstrumentID[], int nCount) = 0; |
| 129 | + |
| 130 | + ///退订行情。 |
| 131 | + ///@param ppInstrumentID 合约ID |
| 132 | + ///@param nCount 要订阅/退订行情的合约个数 |
| 133 | + ///@remark |
| 134 | + virtual int UnSubscribeMarketData(char *ppInstrumentID[], int nCount) = 0; |
| 135 | + |
| 136 | + ///订阅询价。 |
| 137 | + ///@param ppInstrumentID 合约ID |
| 138 | + ///@param nCount 要订阅/退订行情的合约个数 |
| 139 | + ///@remark |
| 140 | + virtual int SubscribeForQuoteRsp(char *ppInstrumentID[], int nCount) = 0; |
| 141 | + |
| 142 | + ///退订询价。 |
| 143 | + ///@param ppInstrumentID 合约ID |
| 144 | + ///@param nCount 要订阅/退订行情的合约个数 |
| 145 | + ///@remark |
| 146 | + virtual int UnSubscribeForQuoteRsp(char *ppInstrumentID[], int nCount) = 0; |
| 147 | + |
| 148 | + ///用户登录请求 |
| 149 | + virtual int ReqUserLogin(CThostFtdcReqUserLoginField *pReqUserLoginField, int nRequestID) = 0; |
| 150 | + |
| 151 | + |
| 152 | + ///登出请求 |
| 153 | + virtual int ReqUserLogout(CThostFtdcUserLogoutField *pUserLogout, int nRequestID) = 0; |
| 154 | +protected: |
| 155 | + ~CThostFtdcMdApi(){}; |
| 156 | +}; |
| 157 | + |
| 158 | +#endif |
0 commit comments