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

推荐一个基于协程的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++处理文件上传的


http://www.kler.cn/a/397804.html

相关文章:

  • 论文解析:计算能力资源的可信共享:利益驱动的异构网络服务提供机制
  • MySQL数据库:SQL语言入门 【3】(学习笔记)
  • 贴代码框架PasteForm特性介绍之markdown和richtext
  • 图像深度与像素深度的辨析
  • 如何处理 iOS 客户端内 Webview H5 中后台播放的音视频问题
  • 学习rust语言宏之macro_rules!
  • 工业大数据分析与应用:开启智能制造新时代
  • 【mysql】基于城市多边形,配合mysql库,查询目标点是否在指定城市内
  • VSCode设置
  • RabbitMQ教程:工作队列(Work Queues)(二)
  • 推荐15个2024最新精选wordpress模板
  • centos7 升级openssl 与升级openssh 安装卸载 telnet-server
  • Go中数组和切片
  • stm32——通用定时器时钟知识点
  • 【小白可懂】微信小程序---课表渲染
  • 使用Python爬虫获取商品订单详情:从API到数据存储
  • FastAPI 中间件详解:实现高性能 Web 应用的完整指南和实际案例
  • 安装paddle
  • 鸿蒙学习基本概念
  • React Hooks 深度解析与实战
  • MyBatis从入门到进阶
  • 【代码随想录】刷题记录(31)-有效的括号
  • 【星海随笔】ZooKeeper-Mesos
  • 【3D Slicer】的小白入门使用指南五
  • 【ict基础软件赛道】真题-50%openGauss
  • 【CSS】absolute定位的默认位置