void CResourceAgent::DoRemoteResponse(unsigned int dwId, const string& strResponse) { RA_XLOG(XLOG_DEBUG, "CResourceAgent::%s, ConnId[%d], Response[%s]\n", __FUNCTION__, dwId, strResponse.c_str()); string strResponseData, strHeaders, strResponseLine; size_t nPos1 = strResponse.find("\r\n"); if (nPos1 != string::npos) { strResponseLine.assign(strResponse.begin(), strResponse.begin() + nPos1); size_t nPos2 = strResponse.find("\r\n\r\n"); if (nPos2 != string::npos) { strHeaders.assign(strResponse.begin() + nPos1 + 2, strResponse.begin() + nPos2 + 2); string strResponseDataRaw = strResponse.substr(nPos2 + 4); boost::iterator_range<string::const_iterator> irBraceLeft = boost::ifind_first(strResponseDataRaw, "{"); boost::iterator_range<string::const_iterator> irBraceRight = boost::ifind_last(strResponseDataRaw, "}"); if (!irBraceLeft.empty() && !irBraceRight.empty()) { strResponseData.assign(irBraceLeft.begin(), irBraceRight.begin()); strResponseData += "}"; } } } map<unsigned int, unsigned int>::iterator iterSeq = m_mapRemoteIdAndSeq.find(dwId); if (iterSeq != m_mapRemoteIdAndSeq.end()) { unsigned int dwSeq = iterSeq->second; m_mapRemoteSeqAndConn.erase(dwSeq); m_mapRemoteIdAndSeq.erase(iterSeq); DoResponse(dwSeq, strResponseData, strHeaders, strResponseLine); } }
int F200001(TRUSERID *handle, int iRequest, ST_PACK *rPack, int *pRetCode, char *szMsg) { int ret = 0; CAccTrans& ats = CAccTrans::GetInst(); TRANS& trans = ats.trans; trans.termid = rPack->lwithdraw_flag; trans.cardno = rPack->lvol0; ats.SetCardCntAndCardBal(rPack->lvol5, rPack->lvol6, rPack->lvol7); // trans.transcode= rPack->lcert_code; ret = CheckCardStatus(); if(ret) { return ret; } T_t_cardtrans cardtrans; memset(&cardtrans, 0, sizeof(cardtrans)); ret = CardTransProcess(cardtrans); if(ret) { return ret; } ret = DoResponse(cardtrans, handle, pRetCode, szMsg); if(ret) { return ret; } return 0; }
void CResourceAgent::DoPeerResponse(unsigned int dwId, const string& strResponse) { RA_XLOG(XLOG_DEBUG, "CResourceAgent::%s, ConnId[%d], Response[%s]\n", __FUNCTION__, dwId, strResponse.c_str()); map<unsigned int, unsigned int>::iterator iterSeq = m_mapInnerIdAndSeq.find(dwId); if (iterSeq != m_mapInnerIdAndSeq.end()) { unsigned int dwSeq = iterSeq->second; map<unsigned int, HpsConnection_ptr>::iterator iterConn = m_mapInnerSeqAndConn.find(dwSeq); iterConn->second->OnVirtalClientClosed(); m_mapInnerIdAndSeq.erase(iterSeq); m_mapInnerSeqAndConn.erase(iterConn); DoResponse(dwSeq, strResponse, "", ""); } }