12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #include "TerminalInfoQueryConn.h"
- #include <memory>
- CTerminalInfoQuery::CTerminalInfoQuery(CEntityBase* pEntity)
- :SpSecureClient(pEntity)
- {
- }
- bool CTerminalInfoQuery::ConnectServer(const std::string& serverAddr, int port)
- {
- return Connect(serverAddr.c_str(), port, 3);
- }
- void CTerminalInfoQuery::OnDisconnect()
- {
- Dbg("connection disconnected");
- }
- void CTerminalInfoQuery::OnPkgAnswer(const CSmartPointer<IPackage>& pRecvPkg)
- {
- const std::string serviceCode = pRecvPkg->GetServiceCode();
- }
- ErrorCodeEnum CTerminalInfoQuery::GetTerminalInfo(const std::string& terminalNo, TerminalRegistRet* terminalInfo)
- {
- SendSayHelloReq(terminalNo);
- auto result = GetFunction()->ReceivePackage(5);
- ErrorCodeEnum err = DealSayHelloRet(result);
- if (Error_Succeed == err) {
- memcpy(terminalInfo, &terminalAns, sizeof(TerminalRegistRet));
- } else {
- Dbg("Deal with SayHello return value failed!: %s", SpStrError(err));
- }
- return err;
- }
- ErrorCodeEnum CTerminalInfoQuery::SendSayHelloReq(const std::string& terminalNo)
- {
- TerminalRegistReq req;
- memset(&req, 0, sizeof(TerminalRegistReq));
- strcpy(req.TerminalNo, terminalNo.c_str());
- CSmartPointer<IPackage> package = GetFunction()->CreateNewPackage("SayHello");
- package->AddStruct("TerminalRegistReq", false, false, (BYTE*)&req, sizeof(req));
- return SendPackage(package) != "" ? Error_Succeed : Error_Unexpect;
- }
- ErrorCodeEnum CTerminalInfoQuery::DealSayHelloRet(const CSmartPointer<IPackage>& pRecvPkg)
- {
- ErrorCodeEnum result(Error_Unexpect);
- DWORD dwSysCode, dwUserCode;
- std::string strErrMsg;
- memset(&terminalAns, 0, sizeof(terminalAns));
- if (pRecvPkg->GetErrMsg(dwSysCode, dwUserCode, strErrMsg)) {
- CSimpleStringA str = CSimpleStringA::Format("[%u] %s", dwUserCode, strErrMsg.c_str());
- StoreErrorMsg(str.GetData());
- result = static_cast<ErrorCodeEnum>(dwSysCode);
- } else {
- int nLen = pRecvPkg->GetStructLen("TerminalRegistRet");
- if (nLen <= 0) {
- StoreErrorMsg("not find struct [TerminalRegistRet] in package");
- } else {
- BYTE* pBuf = new BYTE[nLen];
- memset(pBuf, 0, nLen);
- int nArrayNum = 0;
- if (!pRecvPkg->GetStructData("TerminalRegistRet", (BYTE*)pBuf, &nLen, &nArrayNum)) {
- delete[] pBuf;
- StoreErrorMsg("get struct [TerminalRegistRet] data fail");
- } else {
- TerminalRegistRet* pReq = (TerminalRegistRet *)pBuf;
- Dbg("receive ret1: %s, %d %d", pReq->TerminalNo, nLen, nArrayNum);
- memcpy(&terminalAns, pReq, sizeof(TerminalRegistRet));
- delete[] pBuf;
- result = Error_Succeed;
- }
- }
- }
- return result;
- }
|