# rpc_libevent_cpp **Repository Path**: yiliangwu880/rpc_libevent_cpp ## Basic Information - **Project Name**: rpc_libevent_cpp - **Description**: libevent_cpp rpc 结合代码 - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-02-23 - **Last Updated**: 2026-01-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 介绍: cpp 进程间 rpc 使用例子 不支持多线程使用 # RpcNet.h 复用层次数比较多,实现代码不好阅读。 针对自己项目,可以参考代码重写一遍,代码也不多 # 使用方法: 依赖网络库 libevent_cpp include RpcNet.h 。修改 log_def.h 日志宏 ## client 例子 int CAdd(int a, int b) { return a + b; //Ret(...) //返回多个值 //RpcNetClient* p = RpcNetClient::GetCurCon(); //uint32_t lastSnId = p->GetCurSnId(); //.... //RpcNetClient *p = find p; //用户自定义代码 查找RpcNetClient。 建议用户用 WeakPtr 的方法,管理 连接对象,就不操心什么时候野了 //p->RetEx(lastSnId, ...); //异步返回的方法. } void main() { RpcNetClient g_client1; g_client1.RegFun(CAdd, "CAdd"); auto OnInitOk = []() { auto f = [](int r) { //获得结果 }; Call(f, "Add", 1, 2); }; g_client1.Init("127.0.0.1", 5665, OnInitOk); lc::EventMgr::Ins().Dispatch(); } ## CallRet(...).ret(cb,timeOut) 版本, 支持lambda 写后面. 让代码更容易阅读 CallRet("Add", 1, 2).Ret([](int r) { //获得结果 }); ## svr 例子 class ConToClient : public RpcConToClient { public: virtual void OnCon() override { auto f = [](int r1) { //获得client服务函数结果 }; Call(f, "CAdd", 1, 1); } }; RpcNetSvr& gRpcSvr = RpcNetSvr::Ins(); char Add(char a, char b) { return a + b; //异步返回结果例子 //auto conSnId = gRpcSvr.GetCurConSnId(); //... //gRpcSvr.RetEx(conSnId, string("a"), 5); } #define SvrReg(fun) STATIC_RUN( gRpcSvr.RegFun(fun, #fun);) SvrReg(Add); void main() { gRpcSvr.Init(5665); lc::EventMgr::Ins().Dispatch(); }