当前位置:   article > 正文

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

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

  1. class UserServiceRpc_Stub;
  2. class UserServiceRpc : public ::PROTOBUF_NAMESPACE_ID::Service {
  3. protected:
  4. // This class should be treated as an abstract interface.
  5. inline UserServiceRpc() {};
  6. public:
  7. virtual ~UserServiceRpc();
  8. typedef UserServiceRpc_Stub Stub;
  9. static const ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor* descriptor();
  10. virtual void Login(::PROTOBUF_NAMESPACE_ID::RpcController* controller,
  11. const ::fixbug::LoginRequest* request,
  12. ::fixbug::LoginResponse* response,
  13. ::google::protobuf::Closure* done);
  14. virtual void GetFriendLists(::PROTOBUF_NAMESPACE_ID::RpcController* controller,
  15. const ::fixbug::GetFriendListRequest* request,
  16. ::fixbug::GetFriendListResponse* response,
  17. ::google::protobuf::Closure* done);

调用关系如图所示:

在test.proto中的LoginRequest类继承于protobuf的Message类,UserServiceRpc继承于protobuf的service类中。service类中包含两个虚函数即在UserServiceRpc中的两个方法,UserServiceRpc_Stub继承UserServiceRpc,此类多了RpcChannel指针,方法将会通过Rpcchannel指针调用CallMethod函数,我们将用自己写的类继承Rpcchannel,重写其中的CallMethod方法,将派生类对象传给基类指针从而调用派生类里的函数。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/488430
推荐阅读
相关标签
  

闽ICP备14008679号