2015-03-26 07:34:26 +00:00
|
|
|
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::OnRspAuthenticate(CThostFtdcRspAuthenticateField *pRspAuthenticateField, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPAUTHENTICATE;
|
|
|
|
|
|
|
|
if (pRspAuthenticateField)
|
|
|
|
{
|
|
|
|
task.task_data = *pRspAuthenticateField;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcRspAuthenticateField empty_data = CThostFtdcRspAuthenticateField();
|
|
|
|
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::OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPUSERLOGIN;
|
|
|
|
|
|
|
|
if (pRspUserLogin)
|
|
|
|
{
|
|
|
|
task.task_data = *pRspUserLogin;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcRspUserLoginField empty_data = CThostFtdcRspUserLoginField();
|
|
|
|
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(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPUSERLOGOUT;
|
|
|
|
|
|
|
|
if (pUserLogout)
|
|
|
|
{
|
|
|
|
task.task_data = *pUserLogout;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcUserLogoutField empty_data = CThostFtdcUserLogoutField();
|
|
|
|
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(CThostFtdcUserPasswordUpdateField *pUserPasswordUpdate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPUSERPASSWORDUPDATE;
|
|
|
|
|
|
|
|
if (pUserPasswordUpdate)
|
|
|
|
{
|
|
|
|
task.task_data = *pUserPasswordUpdate;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcUserPasswordUpdateField empty_data = CThostFtdcUserPasswordUpdateField();
|
|
|
|
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::OnRspTradingAccountPasswordUpdate(CThostFtdcTradingAccountPasswordUpdateField *pTradingAccountPasswordUpdate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPTRADINGACCOUNTPASSWORDUPDATE;
|
|
|
|
|
|
|
|
if (pTradingAccountPasswordUpdate)
|
|
|
|
{
|
|
|
|
task.task_data = *pTradingAccountPasswordUpdate;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcTradingAccountPasswordUpdateField empty_data = CThostFtdcTradingAccountPasswordUpdateField();
|
|
|
|
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(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPORDERINSERT;
|
|
|
|
|
|
|
|
if (pInputOrder)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputOrder;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputOrderField empty_data = CThostFtdcInputOrderField();
|
|
|
|
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::OnRspParkedOrderInsert(CThostFtdcParkedOrderField *pParkedOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPPARKEDORDERINSERT;
|
|
|
|
|
|
|
|
if (pParkedOrder)
|
|
|
|
{
|
|
|
|
task.task_data = *pParkedOrder;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcParkedOrderField empty_data = CThostFtdcParkedOrderField();
|
|
|
|
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::OnRspParkedOrderAction(CThostFtdcParkedOrderActionField *pParkedOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPPARKEDORDERACTION;
|
|
|
|
|
|
|
|
if (pParkedOrderAction)
|
|
|
|
{
|
|
|
|
task.task_data = *pParkedOrderAction;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcParkedOrderActionField empty_data = CThostFtdcParkedOrderActionField();
|
|
|
|
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(CThostFtdcInputOrderActionField *pInputOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPORDERACTION;
|
|
|
|
|
|
|
|
if (pInputOrderAction)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputOrderAction;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputOrderActionField empty_data = CThostFtdcInputOrderActionField();
|
|
|
|
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::OnRspQueryMaxOrderVolume(CThostFtdcQueryMaxOrderVolumeField *pQueryMaxOrderVolume, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQUERYMAXORDERVOLUME;
|
|
|
|
|
|
|
|
if (pQueryMaxOrderVolume)
|
|
|
|
{
|
|
|
|
task.task_data = *pQueryMaxOrderVolume;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcQueryMaxOrderVolumeField empty_data = CThostFtdcQueryMaxOrderVolumeField();
|
|
|
|
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::OnRspSettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPSETTLEMENTINFOCONFIRM;
|
|
|
|
|
|
|
|
if (pSettlementInfoConfirm)
|
|
|
|
{
|
|
|
|
task.task_data = *pSettlementInfoConfirm;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcSettlementInfoConfirmField empty_data = CThostFtdcSettlementInfoConfirmField();
|
|
|
|
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::OnRspRemoveParkedOrder(CThostFtdcRemoveParkedOrderField *pRemoveParkedOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPREMOVEPARKEDORDER;
|
|
|
|
|
|
|
|
if (pRemoveParkedOrder)
|
|
|
|
{
|
|
|
|
task.task_data = *pRemoveParkedOrder;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcRemoveParkedOrderField empty_data = CThostFtdcRemoveParkedOrderField();
|
|
|
|
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::OnRspRemoveParkedOrderAction(CThostFtdcRemoveParkedOrderActionField *pRemoveParkedOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPREMOVEPARKEDORDERACTION;
|
|
|
|
|
|
|
|
if (pRemoveParkedOrderAction)
|
|
|
|
{
|
|
|
|
task.task_data = *pRemoveParkedOrderAction;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcRemoveParkedOrderActionField empty_data = CThostFtdcRemoveParkedOrderActionField();
|
|
|
|
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::OnRspExecOrderInsert(CThostFtdcInputExecOrderField *pInputExecOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPEXECORDERINSERT;
|
|
|
|
|
|
|
|
if (pInputExecOrder)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputExecOrder;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputExecOrderField empty_data = CThostFtdcInputExecOrderField();
|
|
|
|
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::OnRspExecOrderAction(CThostFtdcInputExecOrderActionField *pInputExecOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPEXECORDERACTION;
|
|
|
|
|
|
|
|
if (pInputExecOrderAction)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputExecOrderAction;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputExecOrderActionField empty_data = CThostFtdcInputExecOrderActionField();
|
|
|
|
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::OnRspForQuoteInsert(CThostFtdcInputForQuoteField *pInputForQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPFORQUOTEINSERT;
|
|
|
|
|
|
|
|
if (pInputForQuote)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputForQuote;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputForQuoteField empty_data = CThostFtdcInputForQuoteField();
|
|
|
|
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::OnRspQuoteInsert(CThostFtdcInputQuoteField *pInputQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQUOTEINSERT;
|
|
|
|
|
|
|
|
if (pInputQuote)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputQuote;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputQuoteField empty_data = CThostFtdcInputQuoteField();
|
|
|
|
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::OnRspQuoteAction(CThostFtdcInputQuoteActionField *pInputQuoteAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQUOTEACTION;
|
|
|
|
|
|
|
|
if (pInputQuoteAction)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputQuoteAction;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputQuoteActionField empty_data = CThostFtdcInputQuoteActionField();
|
|
|
|
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);
|
|
|
|
};
|
|
|
|
|
2016-02-27 14:14:40 +00:00
|
|
|
void TdApi::OnRspLockInsert(CThostFtdcInputLockField *pInputLock, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPLOCKINSERT;
|
|
|
|
|
|
|
|
if (pInputLock)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputLock;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputLockField empty_data = CThostFtdcInputLockField();
|
|
|
|
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::OnRspCombActionInsert(CThostFtdcInputCombActionField *pInputCombAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPCOMBACTIONINSERT;
|
|
|
|
|
|
|
|
if (pInputCombAction)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputCombAction;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputCombActionField empty_data = CThostFtdcInputCombActionField();
|
|
|
|
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);
|
|
|
|
};
|
|
|
|
|
2015-03-26 07:34:26 +00:00
|
|
|
void TdApi::OnRspQryOrder(CThostFtdcOrderField *pOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYORDER;
|
|
|
|
|
|
|
|
if (pOrder)
|
|
|
|
{
|
|
|
|
task.task_data = *pOrder;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcOrderField empty_data = CThostFtdcOrderField();
|
|
|
|
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(CThostFtdcTradeField *pTrade, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYTRADE;
|
|
|
|
|
|
|
|
if (pTrade)
|
|
|
|
{
|
|
|
|
task.task_data = *pTrade;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcTradeField empty_data = CThostFtdcTradeField();
|
|
|
|
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(CThostFtdcInvestorPositionField *pInvestorPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYINVESTORPOSITION;
|
|
|
|
|
|
|
|
if (pInvestorPosition)
|
|
|
|
{
|
|
|
|
task.task_data = *pInvestorPosition;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInvestorPositionField empty_data = CThostFtdcInvestorPositionField();
|
|
|
|
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::OnRspQryTradingAccount(CThostFtdcTradingAccountField *pTradingAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYTRADINGACCOUNT;
|
|
|
|
|
|
|
|
if (pTradingAccount)
|
|
|
|
{
|
|
|
|
task.task_data = *pTradingAccount;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcTradingAccountField empty_data = CThostFtdcTradingAccountField();
|
|
|
|
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::OnRspQryInvestor(CThostFtdcInvestorField *pInvestor, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYINVESTOR;
|
|
|
|
|
|
|
|
if (pInvestor)
|
|
|
|
{
|
|
|
|
task.task_data = *pInvestor;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInvestorField empty_data = CThostFtdcInvestorField();
|
|
|
|
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(CThostFtdcTradingCodeField *pTradingCode, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYTRADINGCODE;
|
|
|
|
|
|
|
|
if (pTradingCode)
|
|
|
|
{
|
|
|
|
task.task_data = *pTradingCode;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcTradingCodeField empty_data = CThostFtdcTradingCodeField();
|
|
|
|
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::OnRspQryInstrumentMarginRate(CThostFtdcInstrumentMarginRateField *pInstrumentMarginRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYINSTRUMENTMARGINRATE;
|
|
|
|
|
|
|
|
if (pInstrumentMarginRate)
|
|
|
|
{
|
|
|
|
task.task_data = *pInstrumentMarginRate;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInstrumentMarginRateField empty_data = CThostFtdcInstrumentMarginRateField();
|
|
|
|
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::OnRspQryInstrumentCommissionRate(CThostFtdcInstrumentCommissionRateField *pInstrumentCommissionRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYINSTRUMENTCOMMISSIONRATE;
|
|
|
|
|
|
|
|
if (pInstrumentCommissionRate)
|
|
|
|
{
|
|
|
|
task.task_data = *pInstrumentCommissionRate;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInstrumentCommissionRateField empty_data = CThostFtdcInstrumentCommissionRateField();
|
|
|
|
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(CThostFtdcExchangeField *pExchange, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYEXCHANGE;
|
|
|
|
|
|
|
|
if (pExchange)
|
|
|
|
{
|
|
|
|
task.task_data = *pExchange;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcExchangeField empty_data = CThostFtdcExchangeField();
|
|
|
|
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::OnRspQryProduct(CThostFtdcProductField *pProduct, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYPRODUCT;
|
|
|
|
|
|
|
|
if (pProduct)
|
|
|
|
{
|
|
|
|
task.task_data = *pProduct;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcProductField empty_data = CThostFtdcProductField();
|
|
|
|
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(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYINSTRUMENT;
|
|
|
|
|
|
|
|
if (pInstrument)
|
|
|
|
{
|
|
|
|
task.task_data = *pInstrument;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInstrumentField empty_data = CThostFtdcInstrumentField();
|
|
|
|
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::OnRspQryDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYDEPTHMARKETDATA;
|
|
|
|
|
|
|
|
if (pDepthMarketData)
|
|
|
|
{
|
|
|
|
task.task_data = *pDepthMarketData;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcDepthMarketDataField empty_data = CThostFtdcDepthMarketDataField();
|
|
|
|
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::OnRspQrySettlementInfo(CThostFtdcSettlementInfoField *pSettlementInfo, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYSETTLEMENTINFO;
|
|
|
|
|
|
|
|
if (pSettlementInfo)
|
|
|
|
{
|
|
|
|
task.task_data = *pSettlementInfo;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcSettlementInfoField empty_data = CThostFtdcSettlementInfoField();
|
|
|
|
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::OnRspQryTransferBank(CThostFtdcTransferBankField *pTransferBank, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYTRANSFERBANK;
|
|
|
|
|
|
|
|
if (pTransferBank)
|
|
|
|
{
|
|
|
|
task.task_data = *pTransferBank;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcTransferBankField empty_data = CThostFtdcTransferBankField();
|
|
|
|
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::OnRspQryInvestorPositionDetail(CThostFtdcInvestorPositionDetailField *pInvestorPositionDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYINVESTORPOSITIONDETAIL;
|
|
|
|
|
|
|
|
if (pInvestorPositionDetail)
|
|
|
|
{
|
|
|
|
task.task_data = *pInvestorPositionDetail;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInvestorPositionDetailField empty_data = CThostFtdcInvestorPositionDetailField();
|
|
|
|
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::OnRspQryNotice(CThostFtdcNoticeField *pNotice, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYNOTICE;
|
|
|
|
|
|
|
|
if (pNotice)
|
|
|
|
{
|
|
|
|
task.task_data = *pNotice;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcNoticeField empty_data = CThostFtdcNoticeField();
|
|
|
|
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::OnRspQrySettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYSETTLEMENTINFOCONFIRM;
|
|
|
|
|
|
|
|
if (pSettlementInfoConfirm)
|
|
|
|
{
|
|
|
|
task.task_data = *pSettlementInfoConfirm;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcSettlementInfoConfirmField empty_data = CThostFtdcSettlementInfoConfirmField();
|
|
|
|
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::OnRspQryInvestorPositionCombineDetail(CThostFtdcInvestorPositionCombineDetailField *pInvestorPositionCombineDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYINVESTORPOSITIONCOMBINEDETAIL;
|
|
|
|
|
|
|
|
if (pInvestorPositionCombineDetail)
|
|
|
|
{
|
|
|
|
task.task_data = *pInvestorPositionCombineDetail;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInvestorPositionCombineDetailField empty_data = CThostFtdcInvestorPositionCombineDetailField();
|
|
|
|
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::OnRspQryCFMMCTradingAccountKey(CThostFtdcCFMMCTradingAccountKeyField *pCFMMCTradingAccountKey, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYCFMMCTRADINGACCOUNTKEY;
|
|
|
|
|
|
|
|
if (pCFMMCTradingAccountKey)
|
|
|
|
{
|
|
|
|
task.task_data = *pCFMMCTradingAccountKey;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcCFMMCTradingAccountKeyField empty_data = CThostFtdcCFMMCTradingAccountKeyField();
|
|
|
|
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::OnRspQryEWarrantOffset(CThostFtdcEWarrantOffsetField *pEWarrantOffset, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYEWARRANTOFFSET;
|
|
|
|
|
|
|
|
if (pEWarrantOffset)
|
|
|
|
{
|
|
|
|
task.task_data = *pEWarrantOffset;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcEWarrantOffsetField empty_data = CThostFtdcEWarrantOffsetField();
|
|
|
|
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::OnRspQryInvestorProductGroupMargin(CThostFtdcInvestorProductGroupMarginField *pInvestorProductGroupMargin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYINVESTORPRODUCTGROUPMARGIN;
|
|
|
|
|
|
|
|
if (pInvestorProductGroupMargin)
|
|
|
|
{
|
|
|
|
task.task_data = *pInvestorProductGroupMargin;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInvestorProductGroupMarginField empty_data = CThostFtdcInvestorProductGroupMarginField();
|
|
|
|
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::OnRspQryExchangeMarginRate(CThostFtdcExchangeMarginRateField *pExchangeMarginRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYEXCHANGEMARGINRATE;
|
|
|
|
|
|
|
|
if (pExchangeMarginRate)
|
|
|
|
{
|
|
|
|
task.task_data = *pExchangeMarginRate;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcExchangeMarginRateField empty_data = CThostFtdcExchangeMarginRateField();
|
|
|
|
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::OnRspQryExchangeMarginRateAdjust(CThostFtdcExchangeMarginRateAdjustField *pExchangeMarginRateAdjust, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYEXCHANGEMARGINRATEADJUST;
|
|
|
|
|
|
|
|
if (pExchangeMarginRateAdjust)
|
|
|
|
{
|
|
|
|
task.task_data = *pExchangeMarginRateAdjust;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcExchangeMarginRateAdjustField empty_data = CThostFtdcExchangeMarginRateAdjustField();
|
|
|
|
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::OnRspQryExchangeRate(CThostFtdcExchangeRateField *pExchangeRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYEXCHANGERATE;
|
|
|
|
|
|
|
|
if (pExchangeRate)
|
|
|
|
{
|
|
|
|
task.task_data = *pExchangeRate;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcExchangeRateField empty_data = CThostFtdcExchangeRateField();
|
|
|
|
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::OnRspQrySecAgentACIDMap(CThostFtdcSecAgentACIDMapField *pSecAgentACIDMap, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYSECAGENTACIDMAP;
|
|
|
|
|
|
|
|
if (pSecAgentACIDMap)
|
|
|
|
{
|
|
|
|
task.task_data = *pSecAgentACIDMap;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcSecAgentACIDMapField empty_data = CThostFtdcSecAgentACIDMapField();
|
|
|
|
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);
|
|
|
|
};
|
|
|
|
|
2016-02-27 14:14:40 +00:00
|
|
|
void TdApi::OnRspQryProductExchRate(CThostFtdcProductExchRateField *pProductExchRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYPRODUCTEXCHRATE;
|
|
|
|
|
|
|
|
if (pProductExchRate)
|
|
|
|
{
|
|
|
|
task.task_data = *pProductExchRate;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcProductExchRateField empty_data = CThostFtdcProductExchRateField();
|
|
|
|
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::OnRspQryProductGroup(CThostFtdcProductGroupField *pProductGroup, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYPRODUCTGROUP;
|
|
|
|
|
|
|
|
if (pProductGroup)
|
|
|
|
{
|
|
|
|
task.task_data = *pProductGroup;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcProductGroupField empty_data = CThostFtdcProductGroupField();
|
|
|
|
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);
|
|
|
|
};
|
|
|
|
|
2015-03-26 07:34:26 +00:00
|
|
|
void TdApi::OnRspQryOptionInstrTradeCost(CThostFtdcOptionInstrTradeCostField *pOptionInstrTradeCost, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYOPTIONINSTRTRADECOST;
|
|
|
|
|
|
|
|
if (pOptionInstrTradeCost)
|
|
|
|
{
|
|
|
|
task.task_data = *pOptionInstrTradeCost;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcOptionInstrTradeCostField empty_data = CThostFtdcOptionInstrTradeCostField();
|
|
|
|
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::OnRspQryOptionInstrCommRate(CThostFtdcOptionInstrCommRateField *pOptionInstrCommRate, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYOPTIONINSTRCOMMRATE;
|
|
|
|
|
|
|
|
if (pOptionInstrCommRate)
|
|
|
|
{
|
|
|
|
task.task_data = *pOptionInstrCommRate;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcOptionInstrCommRateField empty_data = CThostFtdcOptionInstrCommRateField();
|
|
|
|
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::OnRspQryExecOrder(CThostFtdcExecOrderField *pExecOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYEXECORDER;
|
|
|
|
|
|
|
|
if (pExecOrder)
|
|
|
|
{
|
|
|
|
task.task_data = *pExecOrder;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcExecOrderField empty_data = CThostFtdcExecOrderField();
|
|
|
|
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::OnRspQryForQuote(CThostFtdcForQuoteField *pForQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYFORQUOTE;
|
|
|
|
|
|
|
|
if (pForQuote)
|
|
|
|
{
|
|
|
|
task.task_data = *pForQuote;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcForQuoteField empty_data = CThostFtdcForQuoteField();
|
|
|
|
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::OnRspQryQuote(CThostFtdcQuoteField *pQuote, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYQUOTE;
|
|
|
|
|
|
|
|
if (pQuote)
|
|
|
|
{
|
|
|
|
task.task_data = *pQuote;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcQuoteField empty_data = CThostFtdcQuoteField();
|
|
|
|
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);
|
|
|
|
};
|
|
|
|
|
2016-02-27 14:14:40 +00:00
|
|
|
void TdApi::OnRspQryLock(CThostFtdcLockField *pLock, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYLOCK;
|
|
|
|
|
|
|
|
if (pLock)
|
|
|
|
{
|
|
|
|
task.task_data = *pLock;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcLockField empty_data = CThostFtdcLockField();
|
|
|
|
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::OnRspQryLockPosition(CThostFtdcLockPositionField *pLockPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYLOCKPOSITION;
|
|
|
|
|
|
|
|
if (pLockPosition)
|
|
|
|
{
|
|
|
|
task.task_data = *pLockPosition;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcLockPositionField empty_data = CThostFtdcLockPositionField();
|
|
|
|
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::OnRspQryInvestorLevel(CThostFtdcInvestorLevelField *pInvestorLevel, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYINVESTORLEVEL;
|
|
|
|
|
|
|
|
if (pInvestorLevel)
|
|
|
|
{
|
|
|
|
task.task_data = *pInvestorLevel;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInvestorLevelField empty_data = CThostFtdcInvestorLevelField();
|
|
|
|
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::OnRspQryExecFreeze(CThostFtdcExecFreezeField *pExecFreeze, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYEXECFREEZE;
|
|
|
|
|
|
|
|
if (pExecFreeze)
|
|
|
|
{
|
|
|
|
task.task_data = *pExecFreeze;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcExecFreezeField empty_data = CThostFtdcExecFreezeField();
|
|
|
|
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::OnRspQryCombInstrumentGuard(CThostFtdcCombInstrumentGuardField *pCombInstrumentGuard, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYCOMBINSTRUMENTGUARD;
|
|
|
|
|
|
|
|
if (pCombInstrumentGuard)
|
|
|
|
{
|
|
|
|
task.task_data = *pCombInstrumentGuard;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcCombInstrumentGuardField empty_data = CThostFtdcCombInstrumentGuardField();
|
|
|
|
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::OnRspQryCombAction(CThostFtdcCombActionField *pCombAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYCOMBACTION;
|
|
|
|
|
|
|
|
if (pCombAction)
|
|
|
|
{
|
|
|
|
task.task_data = *pCombAction;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcCombActionField empty_data = CThostFtdcCombActionField();
|
|
|
|
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);
|
|
|
|
};
|
|
|
|
|
2015-03-26 07:34:26 +00:00
|
|
|
void TdApi::OnRspQryTransferSerial(CThostFtdcTransferSerialField *pTransferSerial, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYTRANSFERSERIAL;
|
|
|
|
|
|
|
|
if (pTransferSerial)
|
|
|
|
{
|
|
|
|
task.task_data = *pTransferSerial;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcTransferSerialField empty_data = CThostFtdcTransferSerialField();
|
|
|
|
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::OnRspQryAccountregister(CThostFtdcAccountregisterField *pAccountregister, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYACCOUNTREGISTER;
|
|
|
|
|
|
|
|
if (pAccountregister)
|
|
|
|
{
|
|
|
|
task.task_data = *pAccountregister;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcAccountregisterField empty_data = CThostFtdcAccountregisterField();
|
|
|
|
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::OnRspError(CThostFtdcRspInfoField *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::OnRtnOrder(CThostFtdcOrderField *pOrder)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNORDER;
|
|
|
|
|
|
|
|
if (pOrder)
|
|
|
|
{
|
|
|
|
task.task_data = *pOrder;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcOrderField empty_data = CThostFtdcOrderField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnTrade(CThostFtdcTradeField *pTrade)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNTRADE;
|
|
|
|
|
|
|
|
if (pTrade)
|
|
|
|
{
|
|
|
|
task.task_data = *pTrade;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcTradeField empty_data = CThostFtdcTradeField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnErrRtnOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONERRRTNORDERINSERT;
|
|
|
|
|
|
|
|
if (pInputOrder)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputOrder;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputOrderField empty_data = CThostFtdcInputOrderField();
|
|
|
|
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(CThostFtdcOrderActionField *pOrderAction, CThostFtdcRspInfoField *pRspInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONERRRTNORDERACTION;
|
|
|
|
|
|
|
|
if (pOrderAction)
|
|
|
|
{
|
|
|
|
task.task_data = *pOrderAction;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcOrderActionField empty_data = CThostFtdcOrderActionField();
|
|
|
|
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(CThostFtdcInstrumentStatusField *pInstrumentStatus)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNINSTRUMENTSTATUS;
|
|
|
|
|
|
|
|
if (pInstrumentStatus)
|
|
|
|
{
|
|
|
|
task.task_data = *pInstrumentStatus;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInstrumentStatusField empty_data = CThostFtdcInstrumentStatusField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnTradingNotice(CThostFtdcTradingNoticeInfoField *pTradingNoticeInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNTRADINGNOTICE;
|
|
|
|
|
|
|
|
if (pTradingNoticeInfo)
|
|
|
|
{
|
|
|
|
task.task_data = *pTradingNoticeInfo;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcTradingNoticeInfoField empty_data = CThostFtdcTradingNoticeInfoField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnErrorConditionalOrder(CThostFtdcErrorConditionalOrderField *pErrorConditionalOrder)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNERRORCONDITIONALORDER;
|
|
|
|
|
|
|
|
if (pErrorConditionalOrder)
|
|
|
|
{
|
|
|
|
task.task_data = *pErrorConditionalOrder;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcErrorConditionalOrderField empty_data = CThostFtdcErrorConditionalOrderField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnExecOrder(CThostFtdcExecOrderField *pExecOrder)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNEXECORDER;
|
|
|
|
|
|
|
|
if (pExecOrder)
|
|
|
|
{
|
|
|
|
task.task_data = *pExecOrder;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcExecOrderField empty_data = CThostFtdcExecOrderField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnErrRtnExecOrderInsert(CThostFtdcInputExecOrderField *pInputExecOrder, CThostFtdcRspInfoField *pRspInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONERRRTNEXECORDERINSERT;
|
|
|
|
|
|
|
|
if (pInputExecOrder)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputExecOrder;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputExecOrderField empty_data = CThostFtdcInputExecOrderField();
|
|
|
|
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::OnErrRtnExecOrderAction(CThostFtdcExecOrderActionField *pExecOrderAction, CThostFtdcRspInfoField *pRspInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONERRRTNEXECORDERACTION;
|
|
|
|
|
|
|
|
if (pExecOrderAction)
|
|
|
|
{
|
|
|
|
task.task_data = *pExecOrderAction;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcExecOrderActionField empty_data = CThostFtdcExecOrderActionField();
|
|
|
|
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::OnErrRtnForQuoteInsert(CThostFtdcInputForQuoteField *pInputForQuote, CThostFtdcRspInfoField *pRspInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONERRRTNFORQUOTEINSERT;
|
|
|
|
|
|
|
|
if (pInputForQuote)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputForQuote;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputForQuoteField empty_data = CThostFtdcInputForQuoteField();
|
|
|
|
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::OnRtnQuote(CThostFtdcQuoteField *pQuote)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNQUOTE;
|
|
|
|
|
|
|
|
if (pQuote)
|
|
|
|
{
|
|
|
|
task.task_data = *pQuote;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcQuoteField empty_data = CThostFtdcQuoteField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnErrRtnQuoteInsert(CThostFtdcInputQuoteField *pInputQuote, CThostFtdcRspInfoField *pRspInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONERRRTNQUOTEINSERT;
|
|
|
|
|
|
|
|
if (pInputQuote)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputQuote;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputQuoteField empty_data = CThostFtdcInputQuoteField();
|
|
|
|
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::OnErrRtnQuoteAction(CThostFtdcQuoteActionField *pQuoteAction, CThostFtdcRspInfoField *pRspInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONERRRTNQUOTEACTION;
|
|
|
|
|
|
|
|
if (pQuoteAction)
|
|
|
|
{
|
|
|
|
task.task_data = *pQuoteAction;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcQuoteActionField empty_data = CThostFtdcQuoteActionField();
|
|
|
|
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::OnRtnForQuoteRsp(CThostFtdcForQuoteRspField *pForQuoteRsp)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNFORQUOTERSP;
|
|
|
|
|
|
|
|
if (pForQuoteRsp)
|
|
|
|
{
|
|
|
|
task.task_data = *pForQuoteRsp;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcForQuoteRspField empty_data = CThostFtdcForQuoteRspField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
2016-02-27 14:14:40 +00:00
|
|
|
void TdApi::OnRtnCFMMCTradingAccountToken(CThostFtdcCFMMCTradingAccountTokenField *pCFMMCTradingAccountToken)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNCFMMCTRADINGACCOUNTTOKEN;
|
|
|
|
|
|
|
|
if (pCFMMCTradingAccountToken)
|
|
|
|
{
|
|
|
|
task.task_data = *pCFMMCTradingAccountToken;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcCFMMCTradingAccountTokenField empty_data = CThostFtdcCFMMCTradingAccountTokenField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnLock(CThostFtdcLockField *pLock)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNLOCK;
|
|
|
|
|
|
|
|
if (pLock)
|
|
|
|
{
|
|
|
|
task.task_data = *pLock;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcLockField empty_data = CThostFtdcLockField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnErrRtnLockInsert(CThostFtdcInputLockField *pInputLock, CThostFtdcRspInfoField *pRspInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONERRRTNLOCKINSERT;
|
|
|
|
|
|
|
|
if (pInputLock)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputLock;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputLockField empty_data = CThostFtdcInputLockField();
|
|
|
|
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::OnRtnCombAction(CThostFtdcCombActionField *pCombAction)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNCOMBACTION;
|
|
|
|
|
|
|
|
if (pCombAction)
|
|
|
|
{
|
|
|
|
task.task_data = *pCombAction;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcCombActionField empty_data = CThostFtdcCombActionField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnErrRtnCombActionInsert(CThostFtdcInputCombActionField *pInputCombAction, CThostFtdcRspInfoField *pRspInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONERRRTNCOMBACTIONINSERT;
|
|
|
|
|
|
|
|
if (pInputCombAction)
|
|
|
|
{
|
|
|
|
task.task_data = *pInputCombAction;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcInputCombActionField empty_data = CThostFtdcInputCombActionField();
|
|
|
|
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);
|
|
|
|
};
|
|
|
|
|
2015-03-26 07:34:26 +00:00
|
|
|
void TdApi::OnRspQryContractBank(CThostFtdcContractBankField *pContractBank, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYCONTRACTBANK;
|
|
|
|
|
|
|
|
if (pContractBank)
|
|
|
|
{
|
|
|
|
task.task_data = *pContractBank;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcContractBankField empty_data = CThostFtdcContractBankField();
|
|
|
|
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::OnRspQryParkedOrder(CThostFtdcParkedOrderField *pParkedOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYPARKEDORDER;
|
|
|
|
|
|
|
|
if (pParkedOrder)
|
|
|
|
{
|
|
|
|
task.task_data = *pParkedOrder;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcParkedOrderField empty_data = CThostFtdcParkedOrderField();
|
|
|
|
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::OnRspQryParkedOrderAction(CThostFtdcParkedOrderActionField *pParkedOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYPARKEDORDERACTION;
|
|
|
|
|
|
|
|
if (pParkedOrderAction)
|
|
|
|
{
|
|
|
|
task.task_data = *pParkedOrderAction;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcParkedOrderActionField empty_data = CThostFtdcParkedOrderActionField();
|
|
|
|
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::OnRspQryTradingNotice(CThostFtdcTradingNoticeField *pTradingNotice, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYTRADINGNOTICE;
|
|
|
|
|
|
|
|
if (pTradingNotice)
|
|
|
|
{
|
|
|
|
task.task_data = *pTradingNotice;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcTradingNoticeField empty_data = CThostFtdcTradingNoticeField();
|
|
|
|
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::OnRspQryBrokerTradingParams(CThostFtdcBrokerTradingParamsField *pBrokerTradingParams, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYBROKERTRADINGPARAMS;
|
|
|
|
|
|
|
|
if (pBrokerTradingParams)
|
|
|
|
{
|
|
|
|
task.task_data = *pBrokerTradingParams;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcBrokerTradingParamsField empty_data = CThostFtdcBrokerTradingParamsField();
|
|
|
|
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::OnRspQryBrokerTradingAlgos(CThostFtdcBrokerTradingAlgosField *pBrokerTradingAlgos, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQRYBROKERTRADINGALGOS;
|
|
|
|
|
|
|
|
if (pBrokerTradingAlgos)
|
|
|
|
{
|
|
|
|
task.task_data = *pBrokerTradingAlgos;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcBrokerTradingAlgosField empty_data = CThostFtdcBrokerTradingAlgosField();
|
|
|
|
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);
|
|
|
|
};
|
|
|
|
|
2016-02-27 14:14:40 +00:00
|
|
|
void TdApi::OnRspQueryCFMMCTradingAccountToken(CThostFtdcQueryCFMMCTradingAccountTokenField *pQueryCFMMCTradingAccountToken, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQUERYCFMMCTRADINGACCOUNTTOKEN;
|
|
|
|
|
|
|
|
if (pQueryCFMMCTradingAccountToken)
|
|
|
|
{
|
|
|
|
task.task_data = *pQueryCFMMCTradingAccountToken;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcQueryCFMMCTradingAccountTokenField empty_data = CThostFtdcQueryCFMMCTradingAccountTokenField();
|
|
|
|
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);
|
|
|
|
};
|
|
|
|
|
2015-03-26 07:34:26 +00:00
|
|
|
void TdApi::OnRtnFromBankToFutureByBank(CThostFtdcRspTransferField *pRspTransfer)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNFROMBANKTOFUTUREBYBANK;
|
|
|
|
|
|
|
|
if (pRspTransfer)
|
|
|
|
{
|
|
|
|
task.task_data = *pRspTransfer;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcRspTransferField empty_data = CThostFtdcRspTransferField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnFromFutureToBankByBank(CThostFtdcRspTransferField *pRspTransfer)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNFROMFUTURETOBANKBYBANK;
|
|
|
|
|
|
|
|
if (pRspTransfer)
|
|
|
|
{
|
|
|
|
task.task_data = *pRspTransfer;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcRspTransferField empty_data = CThostFtdcRspTransferField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnRepealFromBankToFutureByBank(CThostFtdcRspRepealField *pRspRepeal)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNREPEALFROMBANKTOFUTUREBYBANK;
|
|
|
|
|
|
|
|
if (pRspRepeal)
|
|
|
|
{
|
|
|
|
task.task_data = *pRspRepeal;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcRspRepealField empty_data = CThostFtdcRspRepealField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnRepealFromFutureToBankByBank(CThostFtdcRspRepealField *pRspRepeal)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNREPEALFROMFUTURETOBANKBYBANK;
|
|
|
|
|
|
|
|
if (pRspRepeal)
|
|
|
|
{
|
|
|
|
task.task_data = *pRspRepeal;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcRspRepealField empty_data = CThostFtdcRspRepealField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnFromBankToFutureByFuture(CThostFtdcRspTransferField *pRspTransfer)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNFROMBANKTOFUTUREBYFUTURE;
|
|
|
|
|
|
|
|
if (pRspTransfer)
|
|
|
|
{
|
|
|
|
task.task_data = *pRspTransfer;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcRspTransferField empty_data = CThostFtdcRspTransferField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnFromFutureToBankByFuture(CThostFtdcRspTransferField *pRspTransfer)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNFROMFUTURETOBANKBYFUTURE;
|
|
|
|
|
|
|
|
if (pRspTransfer)
|
|
|
|
{
|
|
|
|
task.task_data = *pRspTransfer;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcRspTransferField empty_data = CThostFtdcRspTransferField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnRepealFromBankToFutureByFutureManual(CThostFtdcRspRepealField *pRspRepeal)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNREPEALFROMBANKTOFUTUREBYFUTUREMANUAL;
|
|
|
|
|
|
|
|
if (pRspRepeal)
|
|
|
|
{
|
|
|
|
task.task_data = *pRspRepeal;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcRspRepealField empty_data = CThostFtdcRspRepealField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnRepealFromFutureToBankByFutureManual(CThostFtdcRspRepealField *pRspRepeal)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNREPEALFROMFUTURETOBANKBYFUTUREMANUAL;
|
|
|
|
|
|
|
|
if (pRspRepeal)
|
|
|
|
{
|
|
|
|
task.task_data = *pRspRepeal;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcRspRepealField empty_data = CThostFtdcRspRepealField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnQueryBankBalanceByFuture(CThostFtdcNotifyQueryAccountField *pNotifyQueryAccount)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNQUERYBANKBALANCEBYFUTURE;
|
|
|
|
|
|
|
|
if (pNotifyQueryAccount)
|
|
|
|
{
|
|
|
|
task.task_data = *pNotifyQueryAccount;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcNotifyQueryAccountField empty_data = CThostFtdcNotifyQueryAccountField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnErrRtnBankToFutureByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONERRRTNBANKTOFUTUREBYFUTURE;
|
|
|
|
|
|
|
|
if (pReqTransfer)
|
|
|
|
{
|
|
|
|
task.task_data = *pReqTransfer;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcReqTransferField empty_data = CThostFtdcReqTransferField();
|
|
|
|
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::OnErrRtnFutureToBankByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONERRRTNFUTURETOBANKBYFUTURE;
|
|
|
|
|
|
|
|
if (pReqTransfer)
|
|
|
|
{
|
|
|
|
task.task_data = *pReqTransfer;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcReqTransferField empty_data = CThostFtdcReqTransferField();
|
|
|
|
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::OnErrRtnRepealBankToFutureByFutureManual(CThostFtdcReqRepealField *pReqRepeal, CThostFtdcRspInfoField *pRspInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONERRRTNREPEALBANKTOFUTUREBYFUTUREMANUAL;
|
|
|
|
|
|
|
|
if (pReqRepeal)
|
|
|
|
{
|
|
|
|
task.task_data = *pReqRepeal;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcReqRepealField empty_data = CThostFtdcReqRepealField();
|
|
|
|
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::OnErrRtnRepealFutureToBankByFutureManual(CThostFtdcReqRepealField *pReqRepeal, CThostFtdcRspInfoField *pRspInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONERRRTNREPEALFUTURETOBANKBYFUTUREMANUAL;
|
|
|
|
|
|
|
|
if (pReqRepeal)
|
|
|
|
{
|
|
|
|
task.task_data = *pReqRepeal;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcReqRepealField empty_data = CThostFtdcReqRepealField();
|
|
|
|
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::OnErrRtnQueryBankBalanceByFuture(CThostFtdcReqQueryAccountField *pReqQueryAccount, CThostFtdcRspInfoField *pRspInfo)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONERRRTNQUERYBANKBALANCEBYFUTURE;
|
|
|
|
|
|
|
|
if (pReqQueryAccount)
|
|
|
|
{
|
|
|
|
task.task_data = *pReqQueryAccount;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcReqQueryAccountField empty_data = CThostFtdcReqQueryAccountField();
|
|
|
|
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::OnRtnRepealFromBankToFutureByFuture(CThostFtdcRspRepealField *pRspRepeal)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNREPEALFROMBANKTOFUTUREBYFUTURE;
|
|
|
|
|
|
|
|
if (pRspRepeal)
|
|
|
|
{
|
|
|
|
task.task_data = *pRspRepeal;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcRspRepealField empty_data = CThostFtdcRspRepealField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnRepealFromFutureToBankByFuture(CThostFtdcRspRepealField *pRspRepeal)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNREPEALFROMFUTURETOBANKBYFUTURE;
|
|
|
|
|
|
|
|
if (pRspRepeal)
|
|
|
|
{
|
|
|
|
task.task_data = *pRspRepeal;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcRspRepealField empty_data = CThostFtdcRspRepealField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRspFromBankToFutureByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPFROMBANKTOFUTUREBYFUTURE;
|
|
|
|
|
|
|
|
if (pReqTransfer)
|
|
|
|
{
|
|
|
|
task.task_data = *pReqTransfer;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcReqTransferField empty_data = CThostFtdcReqTransferField();
|
|
|
|
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::OnRspFromFutureToBankByFuture(CThostFtdcReqTransferField *pReqTransfer, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPFROMFUTURETOBANKBYFUTURE;
|
|
|
|
|
|
|
|
if (pReqTransfer)
|
|
|
|
{
|
|
|
|
task.task_data = *pReqTransfer;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcReqTransferField empty_data = CThostFtdcReqTransferField();
|
|
|
|
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::OnRspQueryBankAccountMoneyByFuture(CThostFtdcReqQueryAccountField *pReqQueryAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRSPQUERYBANKACCOUNTMONEYBYFUTURE;
|
|
|
|
|
|
|
|
if (pReqQueryAccount)
|
|
|
|
{
|
|
|
|
task.task_data = *pReqQueryAccount;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcReqQueryAccountField empty_data = CThostFtdcReqQueryAccountField();
|
|
|
|
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::OnRtnOpenAccountByBank(CThostFtdcOpenAccountField *pOpenAccount)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNOPENACCOUNTBYBANK;
|
|
|
|
|
|
|
|
if (pOpenAccount)
|
|
|
|
{
|
|
|
|
task.task_data = *pOpenAccount;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcOpenAccountField empty_data = CThostFtdcOpenAccountField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnCancelAccountByBank(CThostFtdcCancelAccountField *pCancelAccount)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNCANCELACCOUNTBYBANK;
|
|
|
|
|
|
|
|
if (pCancelAccount)
|
|
|
|
{
|
|
|
|
task.task_data = *pCancelAccount;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcCancelAccountField empty_data = CThostFtdcCancelAccountField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|
|
|
|
void TdApi::OnRtnChangeAccountByBank(CThostFtdcChangeAccountField *pChangeAccount)
|
|
|
|
{
|
|
|
|
Task task = Task();
|
|
|
|
task.task_name = ONRTNCHANGEACCOUNTBYBANK;
|
|
|
|
|
|
|
|
if (pChangeAccount)
|
|
|
|
{
|
|
|
|
task.task_data = *pChangeAccount;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
CThostFtdcChangeAccountField empty_data = CThostFtdcChangeAccountField();
|
|
|
|
memset(&empty_data, 0, sizeof(empty_data));
|
|
|
|
task.task_data = empty_data;
|
|
|
|
}
|
|
|
|
this->task_queue.push(task);
|
|
|
|
};
|
|
|
|
|