RPC框架源码阅读笔记

前言

为了掌握 rpc 框架的基本原理,阅读了一个简单的 rpc 框架的源码(co) 。

消息协议使用 json 。

co

co 这份代码是一个 C++ 基础库,开源在 github 上两个多月,获得了 1.3k star,说明这份代码的质量还是比较高的,有一定的学习价值。

co 包含了一个基于 json 的 rpc 框架,相关实现在 base/rpc.hbase/rpc.cc,另外,还有一个用于根据协议文件生成 C++ 文件的 rpcgen/rpcgen.cc

rpc.h 很简洁,内容如下:

// rpc.h
#pragma once

#include "json.h"

namespace rpc {
   

class Service {
   
  public:
    Service() = default;
    virtual ~Service() = default;

    virtual void process(const Json& req, Json& res) = 0;
};

class Server {
   
  public:
    Server() = default;
    virtual ~Server() = default;

    virtual void start() = 0;
    virtual void add_service(Service*) = 0;
};

class Client {
   
  public:
    Client() = default;
    virtual ~Client() = default;

    virtual void ping() = 0; // send a heartbeat
    virtual void call(const Json& req, Json& res) = 0;
};

Server* new_server(const char* ip, int port, const char* passwd="");
Client* new_client(const char* ip, int port, const char* passwd="");

} // rpc

rpc.h 定义了三个类:ServerClientService。另外还有两个用于实例化服务器和客户端的工厂函数。

Service 类

Service 是一个抽象类,定义了纯虚函数:

virtual void process(const Json& req, Json& res) 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值