-
Notifications
You must be signed in to change notification settings - Fork 239
Expand file tree
/
Copy pathQubit_HL_Quote.h
More file actions
123 lines (86 loc) · 3.61 KB
/
Qubit_HL_Quote.h
File metadata and controls
123 lines (86 loc) · 3.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// Qubit_HL_Quote.h : Qubit_HL_Quote DLL 的主头文件
//
#pragma once
// CQubit_HL_QuoteApp
// 有关此类实现的信息,请参阅 Qubit_HL_Quote.cpp
//
#pragma once
#include "../include/ApiStruct.h"
#include "../include/HLAPI/HLQuoteApi.h"
#pragma comment(lib, "../include/HLAPI/HLQuoteApi.lib")
#pragma comment(lib, "../lib/QuantBox_Queue_x86.lib")
#include <set>
#include <string>
#include <atomic>
#include <mutex>
#include <map>
using namespace std;
class CMsgQueue;
class CMdUserApi :
public HLQuoteSpi
{
enum RequestType
{
E_Init,
E_ReqUserLoginField,
};
public:
CMdUserApi(void);
virtual ~CMdUserApi(void);
void Register(void* pCallback, void* pClass);
ConfigInfoField* Config(ConfigInfoField* pConfigInfo);
void Connect(const string& szPath,
ServerInfoField* pServerInfo,
UserInfoField* pUserInfo,
int count);
void Disconnect();
//void Subscribe(const string& szInstrumentIDs, const string& szExchageID);
//void Unsubscribe(const string& szInstrumentIDs, const string& szExchageID);
//void SubscribeQuote(const string& szInstrumentIDs, const string& szExchageID);
//void UnsubscribeQuote(const string& szInstrumentIDs, const string& szExchageID);
private:
friend void* __stdcall Query(char type, void* pApi1, void* pApi2, double double1, double double2, void* ptr1, int size1, void* ptr2, int size2, void* ptr3, int size3);
void QueryInThread(char type, void* pApi1, void* pApi2, double double1, double double2, void* ptr1, int size1, void* ptr2, int size2, void* ptr3, int size3);
int _Init();
//登录请求
void ReqUserLogin();
int _ReqUserLogin(char type, void* pApi1, void* pApi2, double double1, double double2, void* ptr1, int size1, void* ptr2, int size2, void* ptr3, int size3);
//订阅行情
void Subscribe(const set<string>& instrumentIDs, const string& szExchageID);
void SubscribeQuote(const set<string>& instrumentIDs, const string& szExchageID);
///当客户端与交易后台建立起通信连接,客户端需要进行登录。
virtual void OnFrontConnected();
///当客户端与交易后台通信连接断开时,该方法被调用,客户端不需要处理,API会自动重连。
virtual void OnFrontDisconnected(int nReason);
///错误应答
//@cIsLast 包标志 API_PACKET_FIRST | API_PACKET_LAST 下同
virtual void OnRspError(CHLRspInfoData *pRspInfo, int nRequestID, char cIsLast);
///用户登录应答
virtual void OnRspUserLogin(HLApiRspUserLoginData *pRspUserLogin, CHLRspInfoData *pRspInfo, int nRequestID, char cIsLast);
///用户退出应答
//virtual void OnRspUserLogout(void *pRspUserLogout, void *pRspInfo, int nRequestID, char cIsLast) {};
///市场索引请求应答
virtual void OnRspCodeTable(HLApiRspCodeTable *pRspCodeTable, CHLRspInfoData *pRspInfo, int nRequestID, char cIsLast);
///行情订阅请求应答
virtual void OnRspMarketData(HLApiRspMarketData *pRspMarketData, CHLRspInfoData *pRspInfo, int nRequestID, char cIsLast);
//订阅行情变化通知
virtual void OnRtnMarketData(HLApiMarketData *pMarketData);
//全市场行情变化通知(订阅股票代码为空时,为全市场行情推送)
virtual void OnRtnMarketData(HLApiMarketData *pMarketData, int nSize);
virtual void OnRtnPushStkData(HLApiMarketData *pMarketData, int nSize);
private:
mutex m_csMapInstrumentIDs;
mutex m_csMapQuoteInstrumentIDs;
atomic<int> m_lRequestID; //请求ID,每次请求前自增
set<string> m_setInstrumentIDs; //正在订阅的合约
set<string> m_setQuoteInstrumentIDs; //正在订阅的合约
HLQuoteApi* m_pApi; //行情API
string m_szPath; //生成配置文件的路径
ServerInfoField m_ServerInfo;
UserInfoField m_UserInfo;
int m_nSleep;
CMsgQueue* m_msgQueue; //消息队列指针
CMsgQueue* m_msgQueue_Query;
void* m_pClass;
CMsgQueue* m_remoteQueue;
};