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

唐山市做网站潍坊网站开发公司

唐山市做网站,潍坊网站开发公司,什么后台做网站安全,seo建站优化推广在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://www.tj-hxxt.cn/news/40275.html

相关文章:

  • 网站内容长沙seo步骤
  • 东莞模板建网站平台百度seo查询收录查询
  • 温州企业网站百度推广助手怎么用
  • 网站建设项目经历点击宝seo
  • 企业手机网站建设案例批量关键词排名查询工具
  • 郯城县住房和城乡建设局网站百度在线提问
  • 垂直网站建设方案免费发布产品的网站
  • 柏林网站建设济南网站万词优化
  • 17网一起做网店下载广州seo服务公司
  • wordpress会员导出爱站seo查询软件
  • 湖南做网站的公司排名网推项目平台
  • 石家庄新钥匙做网站百度网站优化
  • 文化公司网站源码博客
  • 做好网站内能另外做链接吗seo数据优化教程
  • 网站开发环境有什么个人博客模板
  • 江苏建设工程招投标网站长尾关键词是什么
  • 关于网站建设费用域名权重查询
  • 丰都网站建设报价app拉新推广
  • nginx 网站建设网页制作素材模板
  • 网站开发中 视频播放卡淘宝美工培训
  • 五金表带厂东莞网站建设网页设计与制作软件有哪些
  • 做的网站怎么放在网上搜索引擎营销的实现方法有哪些
  • 山西 网站制作培训心得体会怎么写
  • 宜宾网站建设略奥网络网络舆情监测平台
  • 做网站后台的时候要注意什么周口网络推广哪家好
  • php做网站需要注意什么国内免费ip地址
  • 做网站哪种编程语言最好南昌seo网站排名
  • 重庆网站建设公司有哪些外贸平台app
  • 网站做整合页面网站开发流程
  • wordpress搭建子網站可以推广发广告的app