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

1.跨平台

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

2.协程系统

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

3.rpc系统

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

cpp 复制代码
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++逻辑

cpp 复制代码
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++处理文件上传的
相关推荐
笑鸿的学习笔记10 分钟前
qt-C++语法笔记之Stretch与Spacer的关系分析
c++·笔记·qt
hardStudy_h24 分钟前
C++——内联函数与Lambda表达式
开发语言·jvm·c++
ZZZS05161 小时前
stack栈练习
c++·笔记·学习·算法·动态规划
位东风1 小时前
【c++学习记录】状态模式,实现一个登陆功能
c++·学习·状态模式
cver1232 小时前
CSGO 训练数据集介绍-2,427 张图片 AI 游戏助手 游戏数据分析
人工智能·深度学习·yolo·目标检测·游戏·计算机视觉
网硕互联的小客服2 小时前
服务器经常出现蓝屏是什么原因导致的?如何排查和修复?
运维·服务器·stm32·单片机·网络安全
witton2 小时前
Go语言网络游戏服务器模块化编程
服务器·开发语言·游戏·golang·origin·模块化·耦合
成都极云科技2 小时前
成都算力租赁新趋势:H20 八卡服务器如何重塑 AI 产业格局?
大数据·服务器·人工智能·云计算·gpu算力
喜欢吃豆2 小时前
从零构建MCP服务器:FastMCP实战指南
运维·服务器·人工智能·python·大模型·mcp
刘阿宾2 小时前
【华为昇腾|CUDA】服务器A6000显卡部署LLM实战记录
服务器·华为·语言模型·gpu算力·kylin