void CQueryApi::QueryInThread(char type, void* pApi1, void* pApi2, double double1, double double2, void* ptr1, int size1, void* ptr2, int size2, void* ptr3, int size3) { int iRet = 0; switch (type) { case E_Init: iRet = _Init(); break; case E_ReqUserLoginField: iRet = _ReqUserLogin(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; case E_QryTradingAccountField: iRet = _ReqQryTradingAccount(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; case E_QryInvestorPositionField: iRet = _ReqQryInvestorPosition(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; case E_QryInstrumentField: iRet = _ReqQryInstrument(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; case E_QryInvestorField: iRet = _ReqQryInvestor(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; case E_QryOrderField: iRet = _ReqQryOrder(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; case E_QryTradeField: iRet = _ReqQryTrade(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; case E_AuthRandCodeField: iRet = _ReqFetchAuthRandCode(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; default: break; } if (0 == iRet) { //返回成功,填加到已发送池 m_nSleep = 1; } else { m_msgQueue_Query->Input_Copy(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); //失败,按4的幂进行延时,但不超过1s m_nSleep *= 4; m_nSleep %= 1023; } this_thread::sleep_for(chrono::milliseconds(m_nSleep)); }
void CTraderApi::QueryInThread(char type, void* pApi1, void* pApi2, double double1, double double2, void* ptr1, int size1, void* ptr2, int size2, void* ptr3, int size3) { int iRet = 0; switch (type) { case E_Init: iRet = _Init(); break; case E_Disconnect: _Disconnect(true); // 不再循环 return; } if (m_pApi) { switch (type) { case E_ReqUserLoginField: iRet = _ReqUserLogin(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; case E_UserLogoutField: iRet = _ReqUserLogout(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; case QueryType::QueryType_ReqQryTradingAccount: iRet = _ReqQryTradingAccount(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; case QueryType::QueryType_ReqQryInvestorPosition: iRet = _ReqQryInvestorPosition(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; // case QueryType::QueryType_ReqQryInstrument: // iRet = _ReqQryInstrument(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); // break; // case QueryType::QueryType_ReqQryInvestor: // iRet = _ReqQryInvestor(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); // break; case QueryType::QueryType_ReqQryOrder: iRet = _ReqQryOrder(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; case QueryType::QueryType_ReqQryTrade: iRet = _ReqQryTrade(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; #ifdef HAS_Quote case QueryType::QueryType_ReqQryQuote: iRet = _ReqQryQuote(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; #endif // HAS_Quote #ifdef HAS_Settlement case E_SettlementInfoConfirmField: iRet = _ReqSettlementInfoConfirm(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; case QueryType::QueryType_ReqQrySettlementInfo: iRet = _ReqQrySettlementInfo(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); break; #endif // HAS_Settlement default: break; } } if (0 == iRet) { //返回成功,填加到已发送池 m_nSleep = 1; } else { m_msgQueue_Query->Input_Copy(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3); //失败,按4的幂进行延时,但不超过1s m_nSleep *= 4; m_nSleep %= 1023; } this_thread::sleep_for(chrono::milliseconds(m_nSleep)); }