Ejemplo n.º 1
0
Archivo: test.cpp Proyecto: ACEZLY/gim
	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;	
	}
Ejemplo n.º 2
0
	int32	const_service_resp(const ServiceResponse& srresp,
			std::string& req){
		return srresp.SerializeToString(&req);
	}