在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=./ 将生成的文件放到 ./ 目录下,截取一部分如下

cpp 复制代码
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方法,将派生类对象传给基类指针从而调用派生类里的函数。

相关推荐
JS_SWKJ2 分钟前
网闸≠防火墙:我们拆解了数据包的“物理摆渡“全过程
网络·安全·web安全
上海云盾第一敬业销售9 分钟前
游戏开服即“炸服“?CC攻击成游戏行业隐形杀手
服务器·网络·游戏
JiaWen技术圈10 分钟前
HTTP/3 协议基础
网络·网络协议·http
Shadow(⊙o⊙)16 分钟前
进程分析—从操作系统到Linux内核深入
linux·运维·服务器·开发语言·网络·c++·后端
Wild API17 分钟前
API中转站多模态接入怎么选:文本、图片、音频不要混在一起测
网络·人工智能·ai
轻颂呀20 分钟前
深度理解TCP(backlog、连接机制、抓包实践)
网络·网络协议·tcp/ip
苍煜10 小时前
Docker容器网络详解+端口映射原理(系列第二篇:实战核心)
网络·docker·容器
初願致夕霞11 小时前
基于系统调用的Linux网络编程——UDP与TCP
linux·网络·c++·tcp/ip·udp
数智化精益手记局13 小时前
什么是设备维护管理?设备维护管理包含哪些内容?
大数据·网络·人工智能·安全·信息可视化
salipopl16 小时前
FPGA中AXI-FIFO主机接口的自定义实现与versal读写工程分析
网络·fpga开发