RpcProvider类(负责发布RPC Service)


RpcProvider类是框架提供的专门发布rpc服务的网络对象类。

mprpcprovider.h

#pragma once

#include "google/protobuf/service.h"
#include <functional>
#include <google/protobuf/descriptor.h>
#include <muduo/net/EventLoop.h>
#include <muduo/net/InetAddress.h>
#include <muduo/net/TcpConnection.h>
#include <muduo/net/TcpServer.h>
#include <string>
#include <unordered_map>

//框架提供的专门发布rpc服务的网络对象类
//同时也执行服务端的桩(stub)所负责的一部分工作
class RpcProvider
{
   
public:
    //这个函数是框架提供给外部发布rpc方法的接口
    //框架是可以接收各种RPC服务的,不能依赖具体的某一个业务
    //基类service指针指向servie的子类对象
    void NotifyService(google::protobuf::Service *service);

    //启动rpc服务节点,开始提供rpc远程网络调用服务
    void Run();

private:
    //muduo的事件循环EventLoop类的对象
    muduo::net::EventLoop m_eventloop;

    //一个结构类型,里面存储了service的信息
    struct ServiceInfo
    {
   
        google::protobuf::Service *m_service;                                                    //service对象
        std::unordered_map<std::string, const google::protobuf::MethodDescriptor *> m_methodMap; //保存service对象的所有rpc方法
    };

    //存储注册成功的service对象和其信息
    std::unordered_map<std::string, ServiceInfo> m_serviceMap;

    //muduo库TCP连接建立时执行的回调函数
    void OnConnection(const muduo::net::TcpConnectionPtr &);

    //muduo库TCP连接上有消息到来(消息读写)时执行的回调函数,相当于服务端的桩stub
    void OnMessage(const muduo::net::TcpConnectionPtr &, muduo::net::Buffer *, muduo::Timestamp);

    //Closure的回调操作,用于序列化rpc的响应和网络发送
    void SendRpcResponse(const muduo::net::TcpConnectionPtr &, google::protobuf::Message *);
};

mprpcprovider.cc

#include "mprpcprovider.h"
#include "logger.h"
#include "mprpcapplication.h"
#include "rpcheader.pb.h"
#include <string>

//这个函数是框架提供给外部发布rpc方法的接口
void RpcProvider::NotifyService(goog
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值