# zeroRpc **Repository Path**: lingluonianhua/zeroRpc ## Basic Information - **Project Name**: zeroRpc - **Description**: rpc框架 - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-06-16 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # zeroRpc #### 介绍 zeroRpc是一个非常简易的RPC框架,我们的宗旨是最大限度的简化RPC开发流程,真正做到像单机软件一样简单。 #### 软件架构 软件架构说明 #### 安装教程 #### 使用说明 第一步:定义rpc业务实现类 class TestRpc { public: //Rpc框架初始化函数 static void OpcodeInit() { //Rpc 服务定义, 用于触发将该类加入到rpc框架中进行初始化 RPC_SERVER_DEF(TestRpc); //Rpc接口定义 RPC_BIND(&TestRpc::GetTotalScore); RPC_BIND(&TestRpc::Login); } std::map GetTotalScore(std::map> mapVal) { std::map Score; ...... return Score; } bool Login(std::string& strUser, std::string& strPwd) { return strUser == "admin" && strPwd == "admin123"; } }; 第二部、main函数中加入客户端stub自动生成代码 int main(int argc, char* argv[]) { RpcInit(); if (argc == 3 && std::string(argv[1]) == "GenerateStub") { std::string strPath = argv[2]; std::cout << "开始生成客户端stub文件, 路径:" << strPath << std::endl; //生成客户端stub代码 CStubGenerateAgent::get_instance().GenerateStubFile(strPath); return 0; } } 第三部、现在可以开始写客户端代码 //定义Rpc网络通道 CRpcChannelPtr pChannel(new MsgRpcChannel); TestRpc_Stub stub(pChannel); std::map> score; score["张三"].emplace("语文", 99); score["张三"].emplace("数学", 120); score["李四"].emplace("语文", 108); score["李四"].emplace("数学", 112); //调用服务端函数 auto ret = stub.GetTotalScore(score); if (ret.Code() == RPC_SUCCESS) { auto val = std::move(ret.GetVal()); for (auto item : val) { std::cout << item.first << ":" << item.second << std::endl; } } #### 参与贡献