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

devtools/2024/11/14 21:12:19/

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.ppmy.cn/devtools/15213.html

相关文章

数据结构入门——排序(代码实现)(下)

int GetMidi(int* a, int left, int right) {int mid (left right) / 2;// left mid rightif (a[left] < a[mid]){if (a[mid] < a[right]){return mid;}else if (a[left] > a[right]) // mid是最大值{return left;}else{return right;}}else // a[left] > a[mid…

STM32使用HAL库解码433遥控芯片EV1527

1、首先了解一下433遥控芯片ev1527的基本资料&#xff1a; 这是他编码的关键信息&#xff1a; 也就是说&#xff0c;一帧数据是&#xff1a;一个同步码20位内码4位按键码。 内码20位2^201048576个地址。 发送就是一帧数据接一帧数据不间断发送。 2、解码思路 从上面的帧结构…

前端表单滑块验证码开发

Jsp页面用javascript加 滑动验证条_jsp验证码滑动实现-CSDN博客 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name&quo…

分类算法——决策树(五)

认识决策树 决策树思想的来源非常朴素&#xff0c;程序设计中的条件分支结构就是if-else结构&#xff0c;最早的决策树就是利用这类结构分割数据的一种分类学习方法。 决策树分类原理详解 为了更好理解决策树具体怎么分类的&#xff0c;通过一个问题例子&#xff1a; 问题…

ADOP告诉您光分路器的类型?如何选择?

&#x1f331;在无源光网络&#xff08;PON&#xff09;中&#xff0c;光分路器作为核心光器件&#xff0c;可帮助多个用户共享一个PON接口&#xff0c;最大限度地扩展了光网络性能。那么你知道目前市面上有多少种光分路器吗&#xff1f;该如何选择呢&#xff1f; 阅读本文后&a…

【教程】MySQL数据库学习笔记(五)——约束(持续更新)

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 第三章 《数据定义语言DDL》 第四章 《数据操…

HiveQL-DML总览

一、LOAD Hive在将数据加载到表中时不进行任何转换。加载操作目前是纯拷贝/移动操作&#xff0c;将数据文件移动到与配置单元表相对应的位置。 语法&#xff1a; load data [local] inpath filepath [overwrite] into table tablename [partition (partcol1val1, partcol2val…

Java23种设计模式-结构型模式之享元模式

享元模式&#xff08;Flyweight Pattern&#xff09;:主要用于减少创建大量相似对象时的内存占用。通过共享对象&#xff0c;享元模式可以减少内存中对象的数量&#xff0c;从而提高程序的性能。 角色&#xff1a; 1.享元角色&#xff08;Flyweight&#xff09;&#xff1a;享…