e05fd91545
2. 完成金仕达黄金T+D接口的封装,但没有测试账号尚未进行测试
768 lines
17 KiB
C++
768 lines
17 KiB
C++
void TdApi::OnFrontConnected()
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONFRONTCONNECTED;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnFrontDisconnected(int nReason)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONFRONTDISCONNECTED;
|
|
task.task_id = nReason;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnHeartBeatWarning(int nTimeLapse)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONHEARTBEATWARNING;
|
|
task.task_id = nTimeLapse;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnPackageStart(int nTopicID, int nSequenceNo)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONPACKAGESTART;
|
|
task.task_id = nTopicID;
|
|
task.task_id = nSequenceNo;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnPackageEnd(int nTopicID, int nSequenceNo)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONPACKAGEEND;
|
|
task.task_id = nTopicID;
|
|
task.task_id = nSequenceNo;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspError(CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPERROR;
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspUserLogin(CUstpFtdcRspUserLoginField *pRspUserLogin, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPUSERLOGIN;
|
|
|
|
if (pRspUserLogin)
|
|
{
|
|
task.task_data = *pRspUserLogin;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcRspUserLoginField empty_data = CUstpFtdcRspUserLoginField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspUserLogout(CUstpFtdcRspUserLogoutField *pRspUserLogout, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPUSERLOGOUT;
|
|
|
|
if (pRspUserLogout)
|
|
{
|
|
task.task_data = *pRspUserLogout;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcRspUserLogoutField empty_data = CUstpFtdcRspUserLogoutField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspUserPasswordUpdate(CUstpFtdcUserPasswordUpdateField *pUserPasswordUpdate, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPUSERPASSWORDUPDATE;
|
|
|
|
if (pUserPasswordUpdate)
|
|
{
|
|
task.task_data = *pUserPasswordUpdate;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcUserPasswordUpdateField empty_data = CUstpFtdcUserPasswordUpdateField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspOrderInsert(CUstpFtdcInputOrderField *pInputOrder, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPORDERINSERT;
|
|
|
|
if (pInputOrder)
|
|
{
|
|
task.task_data = *pInputOrder;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcInputOrderField empty_data = CUstpFtdcInputOrderField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspOrderAction(CUstpFtdcOrderActionField *pOrderAction, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPORDERACTION;
|
|
|
|
if (pOrderAction)
|
|
{
|
|
task.task_data = *pOrderAction;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcOrderActionField empty_data = CUstpFtdcOrderActionField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRtnFlowMessageCancel(CUstpFtdcFlowMessageCancelField *pFlowMessageCancel)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRTNFLOWMESSAGECANCEL;
|
|
|
|
if (pFlowMessageCancel)
|
|
{
|
|
task.task_data = *pFlowMessageCancel;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcFlowMessageCancelField empty_data = CUstpFtdcFlowMessageCancelField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRtnTrade(CUstpFtdcTradeField *pTrade)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRTNTRADE;
|
|
|
|
if (pTrade)
|
|
{
|
|
task.task_data = *pTrade;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcTradeField empty_data = CUstpFtdcTradeField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRtnOrder(CUstpFtdcOrderField *pOrder)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRTNORDER;
|
|
|
|
if (pOrder)
|
|
{
|
|
task.task_data = *pOrder;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcOrderField empty_data = CUstpFtdcOrderField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnErrRtnOrderInsert(CUstpFtdcInputOrderField *pInputOrder, CUstpFtdcRspInfoField *pRspInfo)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONERRRTNORDERINSERT;
|
|
|
|
if (pInputOrder)
|
|
{
|
|
task.task_data = *pInputOrder;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcInputOrderField empty_data = CUstpFtdcInputOrderField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnErrRtnOrderAction(CUstpFtdcOrderActionField *pOrderAction, CUstpFtdcRspInfoField *pRspInfo)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONERRRTNORDERACTION;
|
|
|
|
if (pOrderAction)
|
|
{
|
|
task.task_data = *pOrderAction;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcOrderActionField empty_data = CUstpFtdcOrderActionField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRtnInstrumentStatus(CUstpFtdcInstrumentStatusField *pInstrumentStatus)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRTNINSTRUMENTSTATUS;
|
|
|
|
if (pInstrumentStatus)
|
|
{
|
|
task.task_data = *pInstrumentStatus;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcInstrumentStatusField empty_data = CUstpFtdcInstrumentStatusField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRtnInvestorAccountDeposit(CUstpFtdcInvestorAccountDepositResField *pInvestorAccountDepositRes)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRTNINVESTORACCOUNTDEPOSIT;
|
|
|
|
if (pInvestorAccountDepositRes)
|
|
{
|
|
task.task_data = *pInvestorAccountDepositRes;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcInvestorAccountDepositResField empty_data = CUstpFtdcInvestorAccountDepositResField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspQryOrder(CUstpFtdcOrderField *pOrder, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPQRYORDER;
|
|
|
|
if (pOrder)
|
|
{
|
|
task.task_data = *pOrder;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcOrderField empty_data = CUstpFtdcOrderField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspQryTrade(CUstpFtdcTradeField *pTrade, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPQRYTRADE;
|
|
|
|
if (pTrade)
|
|
{
|
|
task.task_data = *pTrade;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcTradeField empty_data = CUstpFtdcTradeField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspQryUserInvestor(CUstpFtdcRspUserInvestorField *pRspUserInvestor, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPQRYUSERINVESTOR;
|
|
|
|
if (pRspUserInvestor)
|
|
{
|
|
task.task_data = *pRspUserInvestor;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcRspUserInvestorField empty_data = CUstpFtdcRspUserInvestorField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspQryTradingCode(CUstpFtdcRspTradingCodeField *pRspTradingCode, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPQRYTRADINGCODE;
|
|
|
|
if (pRspTradingCode)
|
|
{
|
|
task.task_data = *pRspTradingCode;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcRspTradingCodeField empty_data = CUstpFtdcRspTradingCodeField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspQryInvestorAccount(CUstpFtdcRspInvestorAccountField *pRspInvestorAccount, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPQRYINVESTORACCOUNT;
|
|
|
|
if (pRspInvestorAccount)
|
|
{
|
|
task.task_data = *pRspInvestorAccount;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcRspInvestorAccountField empty_data = CUstpFtdcRspInvestorAccountField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspQryInstrument(CUstpFtdcRspInstrumentField *pRspInstrument, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPQRYINSTRUMENT;
|
|
|
|
if (pRspInstrument)
|
|
{
|
|
task.task_data = *pRspInstrument;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcRspInstrumentField empty_data = CUstpFtdcRspInstrumentField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspQryExchange(CUstpFtdcRspExchangeField *pRspExchange, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPQRYEXCHANGE;
|
|
|
|
if (pRspExchange)
|
|
{
|
|
task.task_data = *pRspExchange;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcRspExchangeField empty_data = CUstpFtdcRspExchangeField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspQryInvestorPosition(CUstpFtdcRspInvestorPositionField *pRspInvestorPosition, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPQRYINVESTORPOSITION;
|
|
|
|
if (pRspInvestorPosition)
|
|
{
|
|
task.task_data = *pRspInvestorPosition;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcRspInvestorPositionField empty_data = CUstpFtdcRspInvestorPositionField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspSubscribeTopic(CUstpFtdcDisseminationField *pDissemination, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPSUBSCRIBETOPIC;
|
|
|
|
if (pDissemination)
|
|
{
|
|
task.task_data = *pDissemination;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcDisseminationField empty_data = CUstpFtdcDisseminationField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspQryComplianceParam(CUstpFtdcRspComplianceParamField *pRspComplianceParam, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPQRYCOMPLIANCEPARAM;
|
|
|
|
if (pRspComplianceParam)
|
|
{
|
|
task.task_data = *pRspComplianceParam;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcRspComplianceParamField empty_data = CUstpFtdcRspComplianceParamField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspQryTopic(CUstpFtdcDisseminationField *pDissemination, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPQRYTOPIC;
|
|
|
|
if (pDissemination)
|
|
{
|
|
task.task_data = *pDissemination;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcDisseminationField empty_data = CUstpFtdcDisseminationField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspQryInvestorFee(CUstpFtdcInvestorFeeField *pInvestorFee, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPQRYINVESTORFEE;
|
|
|
|
if (pInvestorFee)
|
|
{
|
|
task.task_data = *pInvestorFee;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcInvestorFeeField empty_data = CUstpFtdcInvestorFeeField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|
|
void TdApi::OnRspQryInvestorMargin(CUstpFtdcInvestorMarginField *pInvestorMargin, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
{
|
|
Task task = Task();
|
|
task.task_name = ONRSPQRYINVESTORMARGIN;
|
|
|
|
if (pInvestorMargin)
|
|
{
|
|
task.task_data = *pInvestorMargin;
|
|
}
|
|
else
|
|
{
|
|
CUstpFtdcInvestorMarginField empty_data = CUstpFtdcInvestorMarginField();
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
task.task_data = empty_data;
|
|
}
|
|
|
|
if (pRspInfo)
|
|
{
|
|
task.task_error = *pRspInfo;
|
|
}
|
|
else
|
|
{
|
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
|
memset(&empty_error, 0, sizeof(empty_error));
|
|
task.task_error = empty_error;
|
|
}
|
|
task.task_id = nRequestID;
|
|
task.task_last = bIsLast;
|
|
this->task_queue.push(task);
|
|
};
|
|
|