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

相关推荐

  1. 【Ratis】Grpc.proto文件定义一些RPC

    2024-04-25 12:38:07       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-25 12:38:07       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-25 12:38:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-25 12:38:07       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-25 12:38:07       20 阅读

热门阅读

  1. 4月24日,每日信息差

    2024-04-25 12:38:07       16 阅读
  2. python元组与列表的区别

    2024-04-25 12:38:07       44 阅读
  3. Okapi Framework

    2024-04-25 12:38:07       17 阅读
  4. Android配置环境

    2024-04-25 12:38:07       21 阅读
  5. C++读写二进制文件

    2024-04-25 12:38:07       12 阅读
  6. MacBook系统升级导致idea无法打开

    2024-04-25 12:38:07       14 阅读
  7. vue文件、js文件外部导入js

    2024-04-25 12:38:07       39 阅读
  8. 使用AWK进行文本处理

    2024-04-25 12:38:07       13 阅读
  9. 【2024中高级向】22道前端面试题附答案

    2024-04-25 12:38:07       14 阅读