在protobuf里定义描述rpc方法的类型

service  UserServiceRpc     //在test.proto中定义
{
    rpc Login(LoginRequest)returns(LoginResponse);
    rpc GetFriendLists(GetFriendListRequest)returns(GetFriendListResponse);
}

  test.proto文件生成test.pb.cc      protoc  test.proto  --cpp_out=./    将生成的文件放到 ./ 目录下,截取一部分如下

class UserServiceRpc_Stub;class UserServiceRpc : public ::PROTOBUF_NAMESPACE_ID::Service {protected:// This class should be treated as an abstract interface.inline UserServiceRpc() {};public:virtual ~UserServiceRpc();typedef UserServiceRpc_Stub Stub;static const ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor* descriptor();virtual void Login(::PROTOBUF_NAMESPACE_ID::RpcController* controller,const ::fixbug::LoginRequest* request,::fixbug::LoginResponse* response,::google::protobuf::Closure* done);virtual void GetFriendLists(::PROTOBUF_NAMESPACE_ID::RpcController* controller,const ::fixbug::GetFriendListRequest* request,::fixbug::GetFriendListResponse* response,::google::protobuf::Closure* done);

调用关系如图所示:

在test.proto中的LoginRequest类继承于protobuf的Message类,UserServiceRpc继承于protobuf的service类中。service类中包含两个虚函数即在UserServiceRpc中的两个方法,UserServiceRpc_Stub继承UserServiceRpc,此类多了RpcChannel指针,方法将会通过Rpcchannel指针调用CallMethod函数,我们将用自己写的类继承Rpcchannel,重写其中的CallMethod方法,将派生类对象传给基类指针从而调用派生类里的函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/637185.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

货币银行学-货币政策

货币政策 货币政策目标体系货币政策工具如何通过提高短期货币市场利率来缩减货币供应量?法定存款准备金率的作用是什么?它的调整有哪些影响?在货币政策的操作程序中,如何通过公开市场操作影响基础货币?基础货币的构成是…

【网站项目】校园商铺系统小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

数据结构_时间复杂度

✨✨所属专栏:数据结构✨✨ ✨✨作者主页:嶔某✨✨ 什么是时间复杂度? 时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间&#xff0…

亚马逊---设计安全架构

会从以下三个方面展开: 1、AWS资源访问安全 2、应用程序负载的网络安全 3、云中数据的安全 责任共担模式 就像租房子(房东和你的责任) AWS资源访问安全 需要掌握以下几点: 1、跨多个账户的访问控制和管理 2、AWS联合访问和身份服…

【Linux】系统安全及应用

目录 一、账号安全基本措施 1.系统账号清理 2.密码安全控制 3.历史命令安全管理 4.限制su切换用户 1)将信任的用户加入到wheel组中 2)修改su的PAM认证配置文件 5.ssh远程登录输入三次密码错误则锁定用户 二、Linux中的PAM安全认证 1.su命令的…

竞逐智能家居大模型:美的“蓄力”,海尔“疾行”

配图来自Canva可画 随着ChatGPT火热出圈,AI大模型便成为了各行各业必争的高地。“BAT”等互联网大厂、华为、小米等通讯巨头,以及一些垂直AI公司,都开始在大模型市场积极布局。众所周知,发展大模型的关键在于应用场景的落地&…

常见现代卷积神经网络(ResNet, DenseNet)(Pytorch 11)

一 批量规范化(batch normalization) 训练深层神经网络是十分困难的,特别是在较短的时间内使他们收敛更加棘手。批量规范化(batch normalization)是一种流行且有效的技术,可持续加速深层网络的收敛速度。 …

谷歌google广告新手教程,看这一篇就足够!

谷歌Google广告是企业触达广大潜在客户、推动业务增长的强大渠道,对于初涉此领域的广告新手而言,掌握谷歌广告的基本操作、策略规划到优化技巧,无疑是开启成功营销之旅的关键。本文不仅为您提供一份详尽的谷歌广告入门指南,还将特…

单位信息宣传通讯稿件用对投稿方法轻松就能发表

在过去的日子里,作为单位的一员,我肩负着向各大媒体投放通讯稿件的重任。然而,这一过程却充满了曲折与辛酸。每次撰写完精心打磨的稿件,随之而来的并非是成就感,而是繁复冗长的投稿流程。我不得不花费大量时间登录各个媒体平台,逐个填写邮件主题、正文以及附件,不仅耗时费力,还…

一文读懂Partisia Blockhain:兼顾去中心化、安全性与可扩展性

“Partisia Blockhain 解决了区块链领域长期存在的问题,其兼顾了去中心化、安全性以及可扩展性” Partisia Blockchain 是一个具有独特零知识证明预言机以及分片解决方案的 Layer1,解决了困扰整个区块链行业的问题。 目前,多样化的区块链层出…

mac m1/m2 芯片安装 ps 2023 插件无法显示扩展界面

碎碎念:一直在踩坑的路上,甚至想休息时间玩一会儿 ps 都能踩坑 问题描述 新的 m2 芯片 mac 安装了色环插件后,在窗口界面中没有找到扩展,且在首选项->增效工具的旧版扩展也是灰色的 题外话:记录一下 mac 的 photo…

Oracle Hint 语法详解

什么是Hint Hint 是 Oracle 提供的一种 SQL 语法,它允许用户在 SQL 语句中插入相关的语法,从而影响 SQL 的执行方式。 因为 Hint 的特殊作用,所以对于开发人员不应该在代码中使用它,Hint 更像是 Oracle 提供给 DBA 用来分析诊断问…