int32 handle_service_request(const std::string& resp){ int32 ret = 0; ServiceRequest svreq; std::string outpayload; ++total_recv_req; if(!svreq.ParseFromString(resp)){ LOG_OUT << "cid:" << m_cid << " handle_service_request ParseFromString fail\n"; return -1; } if(svreq.to_sessid() != m_sessid){ LOG_OUT << "cid:" << m_cid << " handle_service_request,ret sessid:" << svreq.from_sessid() << " != m_sessid:" << m_sessid << std::endl; ret = -200; } switch(svreq.from_type()){ case 200: ret = handle_peer_request(svreq.sn(), svreq.payload(), outpayload); break; default: LOG_OUT << "cid:" << m_cid << ", handleServiceRequest:" << svreq.payload() << std::endl; } exit: ServiceResponse svresp; svresp.set_sn(svreq.sn()); svresp.set_from_sessid(m_sessid); svresp.set_to_sessid(svreq.from_sessid()); svresp.set_from_type(0); svresp.set_to_type(svreq.from_type()); svresp.set_status(ret); svresp.set_payload(outpayload); std::string msg; std::string body; svresp.SerializeToString(&body); ret = send_req(201, body); if(ret == 0) ++recv_req_success_count; m_status = CLIENT_STATUS_INIT; return ret; }
int32 const_service_resp(const ServiceResponse& srresp, std::string& req){ return srresp.SerializeToString(&req); }