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

相关推荐
联众合科技1 小时前
AF 防火墙与传统防火墙核心差异及新型威胁防御实测
网络·安全
三言老师1 小时前
free查看内存与缓存状态实操
运维·服务器·网络·centos
奥莱维1 小时前
酒店客控系统多少钱_2026不同规模报价区间透明解析
大数据·网络
无锡耐特森1 小时前
通过CAN转Profinet网关与PLC的配合引领智慧物流的未来
运维·服务器·网络
羽翼安全1 小时前
严防屏幕泄密:企业防拍摄系统的技术原理与落地实践
网络·安全·电脑
有续技术1 小时前
三菱 (Mitsubishi) 机床 设置查看 IP 地址
linux·服务器·网络
2401_873479401 小时前
IPv6查出来的地理位置是错的?用双栈IP库解决定位偏差问题
网络·数据库·tcp/ip·ip
花生了什么事o1 小时前
WebSocket 与 SSE:实时通信方案的选择
网络·websocket·网络协议
yagami_gagami1 小时前
第四届黄河流域公安院校电子物证个人赛服务器取证
linux·服务器·网络·mysql·安全·docker·llama
九硕智慧建筑一体化厂家2 小时前
直流照明|档案库房专用照明,防紫外线、防纸张老化、适配24小时值守
运维·网络·笔记·智慧城市