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