Exemplo n.º 1
0
Arquivo: test.cpp Projeto: 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;	
	}
Exemplo n.º 2
0
        int32   run(){
                int32   ret = 0;
		int32	cnt = 0;
		while(1){
			++cnt;
			std::string resp;
			ret = recv_resp(resp);
			if(ret < 0){
				std::cout << "recv_resp fail!" << std::endl;
				return -1;
			}
			ServiceRequest svreq;
			parse_service_req(resp, svreq);
			ServiceResponse svresp;
			svresp.set_from_sessid(m_sessid);
			svresp.set_to_sessid(svreq.from_sessid());
			svresp.set_svtype(svreq.svtype());
			svresp.set_sn(svreq.sn());
			svresp.set_status(0);
			svresp.set_payload(svreq.payload());
			std::string req;
			const_service_resp(svresp, req);
			ret = send_req(SERVICE_RESP, req);
			if(ret < 0){
				std::cout << "send_req fail, sessid:" << svreq.from_sessid() 
					<< ", sn:" << svreq.sn() << std::endl;
				return -1;
			}else{
				std::cout << "handle request, sessid:" << svreq.from_sessid() 
					<< ", sn:" << svreq.sn() 
					<< " ,send ret:" << ret << std::endl;
			}	
		}

                return  ret;
        }