503 lines
11 KiB
C++
503 lines
11 KiB
C++
|
void TdApi::OnFrontConnected()
|
||
|
{
|
||
|
Task task = Task();
|
||
|
task.task_name = ONFRONTCONNECTED;
|
||
|
this->task_queue.push(task);
|
||
|
};
|
||
|
|
||
|
void TdApi::OnFrontDisconnected(int nReason)
|
||
|
{
|
||
|
Task task = Task();
|
||
|
task.task_name = ONFRONTDISCONNECTED;
|
||
|
task.task_id = nReason;
|
||
|
this->task_queue.push(task);
|
||
|
};
|
||
|
|
||
|
void TdApi::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::OnNtyMktStatus(const CThostFtdcMarketStatusField *pfldMktStatus)
|
||
|
{
|
||
|
Task task = Task();
|
||
|
task.task_name = ONNTYMKTSTATUS;
|
||
|
|
||
|
if (ThostFtdcMarketStatusField)
|
||
|
{
|
||
|
task.task_data = CThostFtdcMarketStatusField;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
const empty_data = const();
|
||
|
memset(&empty_data, 0, sizeof(empty_data));
|
||
|
task.task_data = empty_data;
|
||
|
}
|
||
|
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::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData)
|
||
|
{
|
||
|
Task task = Task();
|
||
|
task.task_name = ONRTNDEPTHMARKETDATA;
|
||
|
|
||
|
if (pDepthMarketData)
|
||
|
{
|
||
|
task.task_data = *pDepthMarketData;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
CThostFtdcDepthMarketDataField empty_data = CThostFtdcDepthMarketDataField();
|
||
|
memset(&empty_data, 0, sizeof(empty_data));
|
||
|
task.task_data = empty_data;
|
||
|
}
|
||
|
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::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::OnRtnOrder(CThostFtdcOrderRtnField *pOrder)
|
||
|
{
|
||
|
Task task = Task();
|
||
|
task.task_name = ONRTNORDER;
|
||
|
|
||
|
if (pOrder)
|
||
|
{
|
||
|
task.task_data = *pOrder;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
CThostFtdcOrderRtnField empty_data = CThostFtdcOrderRtnField();
|
||
|
memset(&empty_data, 0, sizeof(empty_data));
|
||
|
task.task_data = empty_data;
|
||
|
}
|
||
|
this->task_queue.push(task);
|
||
|
};
|
||
|
|
||
|
void TdApi::OnForceLogout(CThostFtdcUserLogoutField *pLogout)
|
||
|
{
|
||
|
Task task = Task();
|
||
|
task.task_name = ONFORCELOGOUT;
|
||
|
|
||
|
if (pLogout)
|
||
|
{
|
||
|
task.task_data = *pLogout;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
CThostFtdcUserLogoutField empty_data = CThostFtdcUserLogoutField();
|
||
|
memset(&empty_data, 0, sizeof(empty_data));
|
||
|
task.task_data = empty_data;
|
||
|
}
|
||
|
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::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::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::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::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::OnRspQryClientStorage(CThostFtdcStorageField *pStorage, CThostFtdcRspInfoField *pRspInfo,int nRequestID,bool bIsLast)
|
||
|
{
|
||
|
Task task = Task();
|
||
|
task.task_name = ONRSPQRYCLIENTSTORAGE;
|
||
|
|
||
|
if (pStorage)
|
||
|
{
|
||
|
task.task_data = *pStorage;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
CThostFtdcStorageField empty_data = CThostFtdcStorageField();
|
||
|
memset(&empty_data, 0, sizeof(empty_data));
|
||
|
task.task_data = empty_data;
|
||
|
}
|
||
|
|
||
|
if (pRspInfo)
|
||
|
{
|
||
|
task.task_error = *pRspInfo,int;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
CThostFtdcRspInfoField empty_error = CThostFtdcRspInfoField();
|
||
|
memset(&empty_error, 0, sizeof(empty_error));
|
||
|
task.task_error = empty_error;
|
||
|
}
|
||
|
this->task_queue.push(task);
|
||
|
};
|
||
|
|
||
|
void TdApi::OnRspSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
|
||
|
{
|
||
|
Task task = Task();
|
||
|
task.task_name = ONRSPSUBMARKETDATA;
|
||
|
|
||
|
if (pSpecificInstrument)
|
||
|
{
|
||
|
task.task_data = *pSpecificInstrument;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
CThostFtdcSpecificInstrumentField empty_data = CThostFtdcSpecificInstrumentField();
|
||
|
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);
|
||
|
};
|
||
|
|