void CTraderApi::OnRspUserLogin(CUstpFtdcRspUserLoginField *pRspUserLogin, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { RspUserLoginField field = { 0 }; if (!IsErrorRspInfo(pRspInfo) &&pRspUserLogin) { strncpy(field.TradingDay, pRspUserLogin->TradingDay, sizeof(DateType)); strncpy(field.LoginTime, pRspUserLogin->LoginTime, sizeof(TimeType)); //sprintf(field.SessionID, "%d:%d", pRspUserLogin->FrontID, pRspUserLogin->SessionID); memcpy(&m_RspUserLogin__, &field, sizeof(RspUserLoginField)); XRespone(ResponeType::OnConnectionStatus, m_msgQueue, this, ConnectionStatus::Logined, 0, &field, sizeof(RspUserLoginField), nullptr, 0, nullptr, 0); // 记下登录信息,可能会用到 memcpy(&m_RspUserLogin,pRspUserLogin,sizeof(CUstpFtdcRspUserLoginField)); long long x = 0; for (int i = 0; i<12; ++i)//这地方为何一定要用12 { if (m_RspUserLogin.MaxOrderLocalID[i] == 0) { m_RspUserLogin.MaxOrderLocalID[i] = '0'; } long long b = (m_RspUserLogin.MaxOrderLocalID[i] - '0'); x = x * 10L + b; } m_nMaxOrderRef = x + 1; ReqQryUserInvestor(); } else { field.ErrorID = pRspInfo->ErrorID; strcpy(field.ErrorMsg, pRspInfo->ErrorMsg); XRespone(ResponeType::OnConnectionStatus, m_msgQueue, this, ConnectionStatus::Disconnected, 0, &field, sizeof(RspUserLoginField), nullptr, 0, nullptr, 0); } if (bIsLast) ReleaseRequestMapBuf(nRequestID); }
void CTraderApi::OnRspUserLogin(CUstpFtdcRspUserLoginField *pRspUserLogin, CUstpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) { RspUserLoginField* pField = (RspUserLoginField*)m_msgQueue->new_block(sizeof(RspUserLoginField)); if (!IsErrorRspInfo(pRspInfo) &&pRspUserLogin) { pField->TradingDay = GetDate(pRspUserLogin->TradingDay); pField->LoginTime = GetTime(pRspUserLogin->LoginTime); //sprintf(pField->SessionID, "%d:%d", pRspUserLogin->FrontID, pRspUserLogin->SessionID); memcpy(&m_RspUserLogin__, pField, sizeof(RspUserLoginField)); m_msgQueue->Input_NoCopy(ResponeType::OnConnectionStatus, m_msgQueue, m_pClass, ConnectionStatus::Logined, 0, pField, sizeof(RspUserLoginField), nullptr, 0, nullptr, 0); // 记下登录信息,可能会用到 memcpy(&m_RspUserLogin,pRspUserLogin,sizeof(CUstpFtdcRspUserLoginField)); long long x = 0; for (int i = 0; i<12; ++i)//这地方为何一定要用12 { if (m_RspUserLogin.MaxOrderLocalID[i] == 0) { m_RspUserLogin.MaxOrderLocalID[i] = '0'; } long long b = (m_RspUserLogin.MaxOrderLocalID[i] - '0'); x = x * 10L + b; } m_nMaxOrderRef = x + 1; ReqQryUserInvestor(); } else { pField->ErrorID = pRspInfo->ErrorID; strcpy(pField->ErrorMsg, pRspInfo->ErrorMsg); m_msgQueue->Input_NoCopy(ResponeType::OnConnectionStatus, m_msgQueue, m_pClass, ConnectionStatus::Disconnected, 0, pField, sizeof(RspUserLoginField), nullptr, 0, nullptr, 0); } }