当前位置: 首页 > news >正文

推荐一个基于协程的C++(lua)游戏服务器

1.跨平台

支持win,mac,linux等多个操作系统

2.协程系统

使用汇编实现的上下文模块,C++模块实现的协程调度器,使用共享栈,支持开启上千万协程,一个协程大概使用2000字节

3.rpc系统

强大的rpc系统,功能模块可以使用c++或者lua实现,也可以使用lua替换c++业务逻辑,rpc网络协议支持(tcp,udp,kcp)等

Server * targetServer = this->GetActor();
const static std::string func("MongoDB.FindOne");
if(targetServer == nullptr)
{return nullptr;
}
std::unique_ptr<db::mongo::find_one::response> result= std::make_unique<db::mongo::find_one::response>();
int code = targetServer->Call(func, request, result.get());code是错误码,request是请求参数,result是rpc返回的具体数据,内部有协程会自动挂起和唤醒

4.web网站

实现了一套http系统,支持静态网页,只需要配置一个路径即可,支持处理各种http请求,http请求支持c++或者lua处理,也可以使用lua替换c++逻辑

int FileUpload::File(const http::Request &request, http::Response &response)
{int userId = 0;const http::Content* data = request.GetBody();request.GetUrl().GetQuery().Get(http::query::UserId, userId);const http::MultipartFromContent* multiData = data->To<const http::MultipartFromContent>();if (multiData == nullptr){return XCode::CallArgsError;}if (!multiData->IsDone()){return XCode::CallArgsError;}const std::string & path = multiData->Path();const std::string& name = multiData->FileName();const std::string url = fmt::format("{}/{}", this->mDoMain, name);response.SetContent(http::Header::TEXT, url);return XCode::Ok;
}
这是一个使用c++处理文件上传的

github框架地址:https://github.com/yy199595/acs


http://www.mrgr.cn/news/77776.html

相关文章:

  • Linux2.6内核进程调度队列
  • Qt交叉编译x86和arm心得
  • 智慧营区整体解决方案
  • API的妙用
  • wsl2安装
  • vitepress博客模板搭建
  • Kubernetes的pod控制器
  • 大语言模型---什么是注意力机制?LlaMA 中注意力机制的数学定义
  • 002 MATLAB语言基础
  • 【深度学习之一】2024最新pytorch+cuda+cudnn下载安装搭建开发环境
  • 华为OD机试真题---最短木板长度
  • 【AI日记】24.11.22 学习谷歌数据分析初级课程-第2/3课
  • 模型的评估与选择——交叉验证(基于Python实现)
  • PID运动控制
  • Next.js 独立开发教程(三):CSS 样式的完整指南
  • slab分配器
  • 游戏引擎学习第20天
  • RTPS通信使用的socket和端口
  • Linux各种并发服务器优缺点
  • 12 —— Webpack中向前端注入环境变量
  • 2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略(详细解题思路)
  • IDEA算法的详细介绍及Python实现
  • 2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略 (python 代码+matlab代码)
  • 乐理的学习(和弦)
  • c++11的动态类型
  • 二叉树相关OJ题练习