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

相关推荐
网安蟹佬霸19 分钟前
区块链与智能合约安全实战:从Solidity审计到DeFi漏洞深度剖析
运维·前端·网络·安全·自动化·区块链·智能合约
爱学堂IT分享1 小时前
码神之路-Netty-从零实现RPC框架+SpringBoot实战项目教程
spring boot·网络协议·rpc
今夕资源网1 小时前
NapCatQQ:把最难接的 QQ 协议层,变成一组能直接调用的接口
网络·qq·napcat·napcatqq·q协议·qq协议
GuoFeng.Wan1 小时前
深入理解经典蓝牙的channel
linux·服务器·网络
影寂ldy2 小时前
C# WinForm TCP-Socket
网络·tcp/ip·c#
周周哈哈哈2 小时前
网络间通信---TCP
网络
程序猿乐锅2 小时前
从 dsh 源码看「一切皆插件」与 Spring IoC
java·网络·数据库·人工智能·后端·spring
艾醒(AiXing-w)2 小时前
LangChain 1.0 入门(五):提示词工程、partial变量、ChatPromptTemplate、Hub模板库
服务器·网络·langchain
wno7043 小时前
nginx反向代理设置ssl,支持https
运维·服务器·网络
FreeTinker3 小时前
联想个人云存储:大厂入局NAS赛道,体验如何?
网络