int32 CliCon::handlePushResponse(const head& h, const string& req){ TimeRecorder t("SrvCon::handlePushResponse"); int32 ret = 0; int32 conid = 0; string id; PushResponse svresp; EventLoop* l = NULL; SendMsgOp* op = NULL; if(!svresp.ParseFromArray(req.data(), req.size())){ ret = INPUT_FORMAT_ERROR; goto exit; } if(!svresp.has_to_sessid() || !svresp.to_sessid().size()){ ret = MISS_TO_SESSION_ID; goto exit; } //cout << "RESP_TO_SESSID:" << svresp.to_sessid() << endl; ret = getConFromSessid(svresp.to_sessid(), l, conid, id); if(ret < 0){ goto exit; } //??? op = new SendMsgOp(conid, PUSH_RESP, req); ret = l->addAsynOperator(op); if(ret < 0){ svresp.set_status(ret); ret = 0; goto exit; } ef::atomicIncrement64(&req_cnt); exit: ALogError("ConnectServer") << "<action:service_response> <sessid:" << m_sess.sessid() << "> <from_sessid:" << svresp.from_sessid() << "> <to_sessid:" << svresp.to_sessid() << "> <sn:" << svresp.sn() << "> <status:" << svresp.status() << "> <errstr:" << getErrStr(ret) << ">"; if(ret != INPUT_FORMAT_ERROR) ret = 0; return ret; }
int CliCon::handlePushRequest(const head& h, const string& req, string& resp){ TimeRecorder t("CliCon::handlePushRequest"); int ret = 0; int conid = 0; EventLoop* l = NULL; NetOperator* op = NULL; PushResponse svresp; PushRequest svreq; string id; svresp.set_from_sessid("NULL"); svresp.set_to_sessid("NULL"); svresp.set_sn("null"); if(!svreq.ParseFromArray(req.data(), req.size())){ ret = INPUT_FORMAT_ERROR; goto exit; } svresp.set_sn(svreq.sn()); svresp.set_status(0); if(type() < 0){ ret = INVALID_TYPE; goto exit; } svresp.set_to_sessid(svreq.from_sessid()); ret = getConFromSessid(svreq.to_sessid(), l, conid, id); if(ret < 0){ ret = INVALID_SESSION_ID; goto exit; } op = new SendMsgOp(conid, PUSH_REQ, req); ret = l->addAsynOperator(op); if(ret < 0){ svresp.set_status(ret); ret = 0; goto exit; } ef::atomicIncrement64(&req_cnt); exit: if(ret < 0){ svresp.set_status(ret); } if(svresp.status()){ svresp.SerializeToString(&resp); } ALogError("ConnectServer") << "<action:service_request> <id:" << m_sess.id() << "> <version:" << m_sess.version() << "> <sessid:" << m_sess.sessid() << "> <from_sessid:" << svreq.from_sessid() << "> <sn:" << svresp.sn() << "> <to_sessid:" << svreq.to_sessid() << "> <conid:" << conid << "> <status:" << svresp.status() << "> <errstr:" << getErrStr(svresp.status()) << ">"; return ret; }