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

ops/2024/11/20 7:02:23/

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++处理文件上传的


http://www.ppmy.cn/ops/135173.html

相关文章

天童美语:下元节将至

下元节一个重要的传统节日&#xff0c;时间在农历十月十五。下元节跟上元节和中元节一起&#xff0c;构成了、中国的“三元”节日。上元节就是元宵节&#xff0c;中元节就是鬼节&#xff0c;而下元节&#xff0c;就是用来祈福和祭祀的。今天跟合肥天童美语一起了解一下吧&#…

人工智能在医疗健康中的应用:科技如何守护生命?

引言&#xff1a;人工智能助力医疗革命 近年来&#xff0c;人工智能&#xff08;AI&#xff09;在医疗健康领域的应用不断扩大&#xff0c;它不仅优化了医疗流程&#xff0c;还通过创新解决方案提升了诊断和治疗的效率。AI在医学影像分析、药物研发、个性化医疗等领域带来了颠覆…

每日一练:【动态规划算法】斐波那契数列模型之

1. 第 N 个泰波那契数&#xff08;easy&#xff09; 1. 题目链接&#xff1a;1137. 第 N 个泰波那契数 2. 题目描述 3.题目分析 这题我们要求第n个泰波那契Tn的值&#xff0c;很明显的使用动态规划算法。 4.动态规划算法流程 1. 状态表示&#xff1a; 根据题目的要求及公…

【代码大模型】Is Your Code Generated by ChatGPT Really Correct?论文阅读

Is Your Code Generated by ChatGPT Really Correct? Rigorous Evaluation of Large Language Models for Code Generation key word: evaluation framework, LLM-synthesized code, benchmark 论文&#xff1a;https://arxiv.org/pdf/2305.01210.pdf 代码&#xff1a;https:…

MongoDB聚合操作

管道的聚合 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。 MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。 表达式&#xff1a;处理输入文档并输出。表达式是无状态的&#xff0c;只能用…

蓝桥杯——数组

1、移动数组元素 package day3;import java.util.Arrays;public class Demo1 {public static void main(String[] args) {int[] arr {1,2,3,4,5,6};int k 2;int[] arr_new f(arr,k);for (int i : arr_new) {System.out.print(i",");}//或System.out.println();St…

Android Studio | 修改镜像地址为阿里云镜像地址,启动App

在项目文件的目录下的 settings.gradle.kts 中修改配置&#xff0c;配置中包含插件和依赖项 pluginManagement {repositories {maven { urluri ("https://www.jitpack.io")}maven { urluri ("https://maven.aliyun.com/repository/releases")}maven { urlu…

2017年下半年试题一:论软件系统建模方法及其应用

论文库链接&#xff1a;系统架构设计师论文 论文题目 软件系统建模&#xff08;Software System Modeling&#xff09;是软件开发中的重要环节&#xff0c;通过构件软件系统模型可以帮助系统开发人员理解系统、抽取业务过程和管理系统的复杂性&#xff0c;也可以方便各类人员之…