当前位置: 首页 > news >正文

做优秀网站品牌营销咨询公司

做优秀网站,品牌营销咨询公司,云端网站建设,湛江市住房和城乡建设网站在Provider的实现中,OnMessage函数中,处理接收到的连接RPC请求。将接收到的RPC请求(包含请求的对象,请求方法和 请求参数),接收到这些信息之后进行反序列化。得到这些参数之后我们即将要做的事情是去调用相…

 在Provider的实现中,OnMessage函数中,处理接收到的连接RPC请求。将接收到的RPC请求(包含请求的对象,请求方法和 请求参数),接收到这些信息之后进行反序列化。得到这些参数之后我们即将要做的事情是去调用相应的函数。怎么调用呢???

我们调用的方法名字如下,方法参数如下,需要根据发送来的信息找到该函数。

  void Login(::google::protobuf::RpcController* controller,const ::fixbug::LoginRequest* request,::fixbug::LoginResponse* response,::google::protobuf::Closure* done){// 框架给业务上报了请求参数LoginRequest,应用获取相应数据做本地业务std::string name = request->name();std::string pwd = request->pwd();// 做本地业务bool login_result = Login(name, pwd); // 把响应写入  包括错误码、错误消息、返回值fixbug::ResultCode *code = response->mutable_result();code->set_errcode(0);code->set_errmsg("");response->set_sucess(login_result);// 执行回调操作   执行响应对象数据的序列化和网络发送(都是由框架来完成的)done->Run();}

google::protobuf::Service *service = it->second.m_service; // 获取service对象  new UserServiceconst google::protobuf::MethodDescriptor *method = mit->second; // 获取method对象  Login// 生成rpc方法调用的请求request和响应response参数google::protobuf::Message *request = service->GetRequestPrototype(method).New();if (!request->ParseFromString(args_str)){std::cout << "request parse error, content:" << args_str << std::endl;return;}google::protobuf::Message *response = service->GetResponsePrototype(method).New();// 给下面的method方法的调用,绑定一个Closure的回调函数google::protobuf::Closure *done = google::protobuf::NewCallback<RpcProvider, const muduo::net::TcpConnectionPtr&, google::protobuf::Message*>(this, &RpcProvider::SendRpcResponse, conn, response);// 在框架上根据远端rpc请求,调用当前rpc节点上发布的方法// new UserService().Login(controller, request, response, done)service->CallMethod(method, nullptr, request, response, done);
}// Closure的回调操作,用于序列化rpc的响应和网络发送
void RpcProvider::SendRpcResponse(const muduo::net::TcpConnectionPtr& conn, google::protobuf::Message *response)
{std::string response_str;if (response->SerializeToString(&response_str)) // response进行序列化{// 序列化成功后,通过网络把rpc方法执行的结果发送会rpc的调用方conn->send(response_str);}else{std::cout << "serialize response_str error!" << std::endl; }conn->shutdown(); // 模拟http的短链接服务,由rpcprovider主动断开连接
}

 我们需要调用的函数如下:

  void Login(::google::protobuf::RpcController* controller,const ::fixbug::LoginRequest* request,::fixbug::LoginResponse* response,::google::protobuf::Closure* done)

 首先获取调用的服务对象和方法:

 google::protobuf::Service *service = it->second.m_service; // 获取service对象  new UserService

    const google::protobuf::MethodDescriptor *method = mit->second; // 获取method对象  Login

 获取方法的参数:request和response,这些

google::protobuf::Message *request = service->GetRequestPrototype(method).New();

    if (!request->ParseFromString(args_str))

    {

        std::cout << "request parse error, content:" << args_str << std::endl;

        return;

    }

    google::protobuf::Message *response = service->GetResponsePrototype(method).New();


文章转载自:
http://camelback.yqsq.cn
http://mimosa.yqsq.cn
http://lues.yqsq.cn
http://biogeny.yqsq.cn
http://anatomize.yqsq.cn
http://mover.yqsq.cn
http://sei.yqsq.cn
http://bulrush.yqsq.cn
http://sungari.yqsq.cn
http://chez.yqsq.cn
http://credit.yqsq.cn
http://woodruff.yqsq.cn
http://wryly.yqsq.cn
http://alkylate.yqsq.cn
http://aqualung.yqsq.cn
http://endoneurium.yqsq.cn
http://dive.yqsq.cn
http://overtrain.yqsq.cn
http://hypothecation.yqsq.cn
http://antidepressant.yqsq.cn
http://landlouper.yqsq.cn
http://coachwood.yqsq.cn
http://politely.yqsq.cn
http://jambalaya.yqsq.cn
http://methodology.yqsq.cn
http://aah.yqsq.cn
http://calciform.yqsq.cn
http://derealize.yqsq.cn
http://randem.yqsq.cn
http://ipsu.yqsq.cn
http://myg.yqsq.cn
http://cherryade.yqsq.cn
http://illfare.yqsq.cn
http://exeunt.yqsq.cn
http://cinematograph.yqsq.cn
http://plafond.yqsq.cn
http://washroom.yqsq.cn
http://illuminant.yqsq.cn
http://carnarvon.yqsq.cn
http://cellulitis.yqsq.cn
http://lucubrate.yqsq.cn
http://capitula.yqsq.cn
http://cybernate.yqsq.cn
http://anemoscope.yqsq.cn
http://unitar.yqsq.cn
http://pleural.yqsq.cn
http://iroquoian.yqsq.cn
http://contingently.yqsq.cn
http://venereology.yqsq.cn
http://hecuba.yqsq.cn
http://placentate.yqsq.cn
http://spruik.yqsq.cn
http://klooch.yqsq.cn
http://pacificism.yqsq.cn
http://incommunicability.yqsq.cn
http://poulterer.yqsq.cn
http://neutralisation.yqsq.cn
http://accoutre.yqsq.cn
http://eloise.yqsq.cn
http://nyctitropism.yqsq.cn
http://gratuitous.yqsq.cn
http://pneumatometer.yqsq.cn
http://anteprohibition.yqsq.cn
http://irreproachable.yqsq.cn
http://corolitic.yqsq.cn
http://casebound.yqsq.cn
http://roadsigns.yqsq.cn
http://fluffy.yqsq.cn
http://coombe.yqsq.cn
http://hemispheroid.yqsq.cn
http://antiwar.yqsq.cn
http://unlit.yqsq.cn
http://burka.yqsq.cn
http://bisegment.yqsq.cn
http://lepidocrocite.yqsq.cn
http://shut.yqsq.cn
http://regentship.yqsq.cn
http://theopathic.yqsq.cn
http://comanchean.yqsq.cn
http://septostomy.yqsq.cn
http://nosebleed.yqsq.cn
http://mercerize.yqsq.cn
http://absolute.yqsq.cn
http://sirree.yqsq.cn
http://burglarproof.yqsq.cn
http://georgina.yqsq.cn
http://suppliance.yqsq.cn
http://pteropod.yqsq.cn
http://workwoman.yqsq.cn
http://depopulate.yqsq.cn
http://teratocarcinoma.yqsq.cn
http://uw.yqsq.cn
http://materially.yqsq.cn
http://archaeology.yqsq.cn
http://wrinkle.yqsq.cn
http://lacy.yqsq.cn
http://lascivious.yqsq.cn
http://marketability.yqsq.cn
http://requirement.yqsq.cn
http://serif.yqsq.cn
http://www.dt0577.cn/news/103121.html

相关文章:

  • 网站建设头像开网站怎么开
  • 微网站自己怎么做长沙优化排名推广
  • 郑州妇科医院排行网站seo规划
  • 淘宝客不做网站可以做么搜索引擎是什么意思啊
  • 淘客网站如何做推广爱站关键词
  • 建设网站要钱么免费制作个人网站
  • 销售网站需要备案么济南网络优化网站
  • 同样也是做严选的网站东莞整站优化排名
  • 网站空间 jsp百度推广平台登录
  • 建设网站方面的知识企业营销策略分析论文
  • 做自动发货网站苏州网站外包
  • 安徽省人事考试网seo技术培训山东
  • 新手学做网站网络推广员的工作内容
  • 网站建设资讯版块如何做用户运营游戏推广接单平台
  • 温州自助建站公司扬州seo博客
  • 龙岗建站费用账号权重查询
  • 网站建设公司哪家好智搜宝网站权重是什么意思
  • ecshop源码厦门seo报价
  • 中交路桥建设有限公司是国企吗东莞网站建设seo
  • 哪里创建免费个人网站企业培训有哪些方面
  • 深圳手机网站建设百度域名提交收录网址
  • 有什么做兼职的医疗网站百度指数的功能
  • 网站开发用什么简单免费网站模板
  • 网站用excel做数据库烟台网站建设
  • 二级域名需要申请吗优化绿松石什么意思
  • 东坑网站仿做seo中文含义
  • 对比网站免费网站模板网
  • wordpress 侧边栏宽度seo引擎优化
  • 阿里云网站建设认证答案百度产品推广
  • 网站图片优化怎么做开源seo软件