gitee.com/haifengat/gotap_dipper@v0.0.4-0.20231212021028-041a6fa876e5/quote_v9.3.1.4_20190925/TapQuoteAPI.h (about) 1 #ifndef TAP_QUOTE_API_H 2 #define TAP_QUOTE_API_H 3 4 #include "TapQuoteAPIDataType.h" 5 6 #ifdef _WIN32 7 #define TAP_CDECL __cdecl 8 #define TAP_DLLEXPORT __declspec(dllexport) 9 #else 10 #define TAP_CDECL 11 #define TAP_DLLEXPORT 12 #endif 13 14 //TapQuoteAPI.h 15 //文件定义了TapQuoteAPI提供给开发者的对外接口、函数和回调接口。 16 17 //TapQuoteAPI 的回调通知接口。 18 class ITapQuoteAPINotify 19 { 20 public: 21 /** 22 * @brief 系统登录过程回调。 23 * @details 此函数为Login()登录函数的回调,调用Login()成功后建立了链路连接,然后API将向服务器发送登录认证信息, 24 * 登录期间的数据发送情况和登录的回馈信息传递到此回调函数中。 25 * @param[in] errorCode 返回错误码,0表示成功。 26 * @param[in] info 登陆应答信息,如果errorCode!=0,则info=NULL。 27 * @attention 该回调返回成功,说明用户登录成功。但是不代表API准备完毕。需要等到OnAPIReady才能进行查询与订阅请求。 28 * @ingroup G_Q_Login 29 */ 30 virtual void TAP_CDECL OnRspLogin(TAPIINT32 errorCode, const TapAPIQuotLoginRspInfo *info) = 0; 31 /** 32 * @brief 通知用户API准备就绪。 33 * @details 只有用户回调收到此就绪通知时才能进行后续的各种行情数据查询操作。\n 34 * 此回调函数是API能否正常工作的标志。 35 * @attention 就绪后才可以进行后续正常操作 36 * @ingroup G_Q_Login 37 */ 38 virtual void TAP_CDECL OnAPIReady() = 0; 39 /** 40 * @brief API和服务失去连接的回调 41 * @details 在API使用过程中主动或者被动与服务器服务失去连接后都会触发此回调通知用户与服务器的连接已经断开。 42 * @param[in] reasonCode 断开原因代码。具体原因请参见错误码列表 \n 43 * @ingroup G_Q_Disconnect 44 */ 45 virtual void TAP_CDECL OnDisconnect(TAPIINT32 reasonCode) = 0; 46 /** 47 * @brief 返回所有品种信息。 48 * @details 此回调接口用于向用户返回得到的所有品种信息。 49 * @param[in] sessionID 请求的会话ID 50 * @param[in] errorCode 错误码,当errorCode!=0时,info为NULL; 51 * @param[in] isLast 标示是否是最后一批数据; 52 * @param[in] info 返回的信息数组的起始指针。 53 * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。 54 * @ingroup G_Q_Commodity 55 */ 56 virtual void TAP_CDECL OnRspQryCommodity(TAPIUINT32 sessionID, TAPIINT32 errorCode, TAPIYNFLAG isLast, const TapAPIQuoteCommodityInfo *info) = 0; 57 /** 58 * @brief 返回系统中合约信息 59 * @param[in] sessionID 请求的会话ID; 60 * @param[in] errorCode 错误码,当errorCode!=0时,info为NULL; 61 * @param[in] isLast 标示是否是最后一批数据; 62 * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。 63 * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。 64 * @ingroup G_Q_Contract 65 */ 66 virtual void TAP_CDECL OnRspQryContract(TAPIUINT32 sessionID, TAPIINT32 errorCode, TAPIYNFLAG isLast, const TapAPIQuoteContractInfo *info) = 0; 67 /** 68 * @brief 返回订阅行情的全文。 69 * @details 此回调接口用来返回订阅行情的全文。全文为当前时间的行情信息。 70 * @param[in] sessionID 请求的会话ID; 71 * @param[in] isLast 标示是否是最后一批数据; 72 * @param[in] errorCode 错误码,当errorCode!=0时,info为NULL; 73 * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。 74 * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。 75 * @ingroup G_Q_Quote 76 */ 77 virtual void TAP_CDECL OnRspSubscribeQuote(TAPIUINT32 sessionID, TAPIINT32 errorCode, TAPIYNFLAG isLast, const TapAPIQuoteWhole *info) = 0; 78 /** 79 * @brief 退订指定合约的行情的结果回调 80 * @param[in] sessionID 请求的会话ID; 81 * @param[in] errorCode 错误码,当errorCode!=0时,info为NULL; 82 * @param[in] isLast 标示是否是最后一批数据; 83 * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。 84 * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。 85 * @ingroup G_Q_Quote 86 */ 87 virtual void TAP_CDECL OnRspUnSubscribeQuote(TAPIUINT32 sessionID, TAPIINT32 errorCode, TAPIYNFLAG isLast, const TapAPIContract *info) = 0; 88 /** 89 * @brief 返回订阅行情的变化内容。 90 * @details 此回调接口用来通知用户行情信息产生了变化,并向用户提交新的行情全文。 91 * @param[in] info 最新的行情全文内容 92 * @attention 不要修改和删除Quote指示的数据;函数调用结束,参数不再有效。 93 * @ingroup G_Q_Quote 94 */ 95 virtual void TAP_CDECL OnRtnQuote(const TapAPIQuoteWhole *info) = 0; 96 }; 97 98 //TapQuoteAPI 对外功能接口。包含了用户可以调用的功能函数。 99 class ITapQuoteAPI 100 { 101 public: 102 /** 103 * @brief 设置API的回调接口对象。 104 * @details 系统对API的通知将通过设置的回调对象通知给使用者。 105 * ITapQuoteAPINofify是API的回调接口,用户需要继承实现此接口类对象来完成用户需要的功能。 106 * 如果用户没有设置回调接口,则API不会向用户返回任何有用的信息。\n 107 * ITapQuoteAPINotify类的详细内容请查看TapQuoteAPI.h 文件。 108 * @param[in] apiNotify 实现了ITapQuoteAPINotify接口的对象指针。 109 * @operationtype 同步操作 110 * @ingroup G_Q_Login 111 */ 112 virtual TAPIINT32 TAP_CDECL SetAPINotify(ITapQuoteAPINotify *apiNotify) = 0; 113 /** 114 * @brief 设置服务器的IP地址和端口。等到调用Login时真正发起连接。 115 * @param[in] IP IP地址 116 * @param[in] port 端口号 117 * @operationtype 同步操作 118 * @ingroup G_Q_Login 119 */ 120 virtual TAPIINT32 TAP_CDECL SetHostAddress(const TAPICHAR *IP, TAPIUINT16 port) = 0; 121 /** 122 * @brief 发起登录请求。API将先连接服务,建立链路,发起登录认证。 123 * @details 在使用函数函数前用户需要完成服务器的设置SetHostAddress(),并且创建TapAPIQuoteLoginAuth类型的用户信息, 124 * 并且需要设置好回调接口。\n 125 * 连接建立后的用户验证回馈信息通过回调OnLogin()返回给用户。\n 126 * 登录成功后API会自动进行API的初始化,API向服务器请求基础数据,查询完以后会通过回调OnAPIReady() 127 * 指示用户API初始化完成,可以进行后续的操作了。 128 * @param[in] loginAuth 登录验证信息结构指针。包含登录需要的验证信息。 129 * @retval 0 登录成功,API开始准备后台数据 130 * @retval 非0 错误码 131 * @attention 登录成功与否要根据OnLogin回调判断。 132 * @operationtype 异步操作 133 * @warning Login()函数调用成功只是代表于服务器建立了链路连接,只有回调OnLogin()的返回能指示用户是否成功登录了。 134 * @ingroup G_Q_Login 135 */ 136 virtual TAPIINT32 TAP_CDECL Login(const TapAPIQuoteLoginAuth *loginAuth) = 0; 137 /** 138 * @brief 断开和服务器的链路连接。 139 * @details 调用函数后API将登出并断开与服务器的连接。 140 * @operationtype 异步操作 141 * @ingroup G_Q_Disconnect 142 */ 143 virtual TAPIINT32 TAP_CDECL Disconnect() = 0; 144 /** 145 * @brief 得到所有品种 146 * @param[out] sessionID 返回请求的会话ID。 147 * @retval 0 请求成功 148 * @retval 非0 错误码 149 * @operationtype 异步操作 150 * @ingroup G_Q_Commodity 151 */ 152 virtual TAPIINT32 TAP_CDECL QryCommodity(TAPIUINT32 *sessionID) = 0; 153 /** 154 * @brief 查询系统中指定品种的合约信息 155 * @details 使用此函数前需要先QryCommodity()取得品种信息, 156 * 然后选择需要的品种将信息填入TapAPICommodity结构体中完成查询请求。 157 * @param[out] sessionID 返回请求的会话ID; 158 * @param[in] qryReq 查询系统中指定品种的合约信息请求的结构体指针;\n 159 * 该参数各字段为可选字段,可以用以下方法查询:\n 160 * 1.全部留空:查所有合约\n 161 * 2.仅交易所编码有效:查该交易所下所有品种的合约\n 162 * 3.交易所编码和品种类型有效:查该交易所下指定品种类型的合约\n 163 * 4.交易所编码、品种类型和品种编码都有效:查该品种下的所有合约 164 * @retval 0 请求成功 165 * @retval 非0 错误码 166 * @operationtype 异步操作 167 * @ingroup G_Q_Contract 168 */ 169 virtual TAPIINT32 TAP_CDECL QryContract(TAPIUINT32 *sessionID, const TapAPICommodity *qryReq) = 0; 170 /** 171 * @brief 订阅指定合约的行情 172 * @details 函数向服务器请求contract描述的合约的行情信息,行情订阅成功后服务器将持续向用户推送行情信息, 173 * 直到用户退订行情信息或者断开于服务器的通信。\n 174 * 调用此函数前先获取合约信息,然后从合约信息中取出合约填入contract。\n 175 * @param[out] sessionID 返回请求的会话ID。 176 * @param[in] contract 指定合约。 177 * @retval 0 请求成功 178 * @retval 非0 错误码 179 * @operationtype 异步操作 180 * @ingroup G_Q_Quote 181 */ 182 virtual TAPIINT32 TAP_CDECL SubscribeQuote(TAPIUINT32 *sessionID, const TapAPIContract *contract) = 0; 183 /** 184 * @brief 退订指定合约的行情 185 * @details 退订已经订阅的行情信息。 186 * @param[out] sessionID 返回请求的会话ID; 187 * @param[in] contract 指定合约。 188 * @retval 0 请求成功 189 * @retval 非0 错误码 190 * @operationtype 异步操作 191 * @ingroup G_Q_Quote 192 */ 193 virtual TAPIINT32 TAP_CDECL UnSubscribeQuote(TAPIUINT32 *sessionID, const TapAPIContract *contract) = 0; 194 }; 195 196 //-----------------------------TapQuoteAPI导出函数------------------------------------ 197 198 199 #ifdef __cplusplus 200 extern "C" { 201 #endif // __cplusplus 202 203 /** 204 * @brief 创建TapQuoteAPI的接口对象。 205 * @details 创建整个行情API的接口 206 * @param[in] appInfo 应用程序相关信息。 207 * @param[in] iResult 创建接口的错误码。 208 * @retval NULL 创建失败。 209 * @retval !NULL 实现了ITapQuoteAPI接口的对象指针。 210 * @ingroup G_Q_API 211 */ 212 TAP_DLLEXPORT ITapQuoteAPI *TAP_CDECL CreateTapQuoteAPI(const TapAPIApplicationInfo *appInfo, TAPIINT32 &iResult); 213 /** 214 * @brief 销毁通过CreateTapQuoteAPI函数创建的ITapQuoteAPI对象。 215 * @param[in] apiObj ITapQuoteAPI对象指针。 216 * @ingroup G_Q_API 217 */ 218 TAP_DLLEXPORT void TAP_CDECL FreeTapQuoteAPI(ITapQuoteAPI *apiObj); 219 /** 220 * @brief 获取TapQuoteAPI的版本信息 221 * @ingroup G_Q_API 222 */ 223 TAP_DLLEXPORT const TAPICHAR *TAP_CDECL GetTapQuoteAPIVersion(); 224 /** 225 * @brief 设置API自身保存数据目录 226 * @details 调用函数的同时会在path描述的目录下打开以年月日(格式TapQuoteAPI[YYYYMMDD].log)命名的文件,\n 227 * 没有此文件的情况下会试图创建此文件。\n 228 * 文件中保存的数据为API接收到的重要数据和API的使用和错误日志。 229 * @param[in] path 目录。必须可用,目录符号Window下为”\\”或者”/”, Linux下为”/”。 230 * @retval 0 成功 231 * @retval 非0 错误码 232 * @operationtype 同步操作 233 * @ingroup G_Q_LogConfig 234 */ 235 TAP_DLLEXPORT TAPIINT32 TAP_CDECL SetTapQuoteAPIDataPath(const TAPICHAR *path); 236 /** 237 * @brief 设置API的日志级别 238 * @details 设定日志的输出级别,只有当实际日志级别与此处设定的级别相同或更高时,才会将日志写入SetTapQuoteAPIDataPath()函数打开的日志文件。\n 239 * @param[in] level 日志级别:\n 240 * APILOGLEVEL_NONE :不记录日志\n 241 * APILOGLEVEL_ERROR :记录Error日志\n 242 * APILOGLEVEL_WARNING :记录Error和Warning日志\n 243 * APILOGLEVEL_DEBUG :记录Error、Warning和Debug日志\n 244 * @retval 0 设定成功 245 * @retval 非0 错误码 246 * @operationtype 同步操作 247 * @ingroup G_Q_LogConfig 248 */ 249 TAP_DLLEXPORT TAPIINT32 TAP_CDECL SetTapQuoteAPILogLevel(TAPILOGLEVEL level); 250 251 #ifdef __cplusplus 252 } 253 #endif // __cplusplus 254 255 #endif // TAP_QUOTE_API_H