[分布式网络通讯框架]----protobuf定义方法类型以及底层基本框架

描述rpc方法的类型

  • 对于service,需要定义相关的选择,生成service服务类和rpc方法描述,否则默认不生成。option cc_generic_services=true;
syntax="proto3";

package fixbug;

option cc_generic_services=true;

message ResultCode
{
    int32 errcode=1;
    bytes errmsg=2;
}

message LoginRequest
{
    bytes name=1;
    bytes pwd=2;
}

message LoginResponse
{
    ResultCode result=1;
    bool success =2;
}


service UserServiceRpc
{
    rpc Register(RegisterRequest) returns(RegisterResponse);
}
  • 通过 protoc user.proto -cpp_out=./可以生成.ph.c以及.ph.cc文件。
    在这里插入图片描述

  • 底层会自动生成相应的UserServiceRpc类(服务提供方使用)和 UserServiceRpc_Stub类(服务调用方使用)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • UserServiceRpc底层基本框架 rpc服务提供者
    在这里插入图片描述

  • UserServiceRpc_Stub底层代码 服务消费者
    在这里插入图片描述
    user.cc和user.h里面提供了两个非常重要的类供c++程序使用,
    UserServiceRpc_Stub类给caller使用,可以调用UserServiceRpc_Stub::Login(...)发起远端调用
    UserServiceRpccallee使用。callee则继承UserServiceRpc类并重写UserServiceRpc::Login(...)函数,实现Login函数的处理逻辑。

  • GetFriendLists 是与Login类似的。可以看到无论是那一个方法,底层都调用了 channel_->CallMethod(descriptor()->method(0), controller, request, response, done);,这是属于RpcChannel抽象类
    在这里插入图片描述
    我们在自己实现的时候需要写自己的channel类,然后继承RpcChannel抽象类
    在这里插入图片描述
    这一点在接下来的分析中,我们会一一介绍。

  • 26
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值