Exemplo n.º 1
0
    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.svtype()) {
        case 200:
            ret = handle_peer_request(svreq.sn(), svreq.payload(), outpayload);
            break;
        }
exit:
        ServiceResponse svresp;
        svresp.set_sn(svreq.sn());
        svresp.set_from_sessid(m_sessid);
        svresp.set_to_sessid(svreq.from_sessid());
        svresp.set_svtype(svreq.svtype());
        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;
        }