Skip to content
GitLab
Menu
Why GitLab
Pricing
Contact Sales
Explore
Why GitLab
Pricing
Contact Sales
Explore
Sign in
Get free trial
Changes
Page history
Update Home.md
authored
Jun 21, 2017
by
LIU Hao
Show whitespace changes
Inline
Side-by-side
Home.md
View page @
d13b7920
...
@@ -4,7 +4,7 @@ Poseidon 是一个单进程、不对称多线程、多协程的游戏服务端
...
@@ -4,7 +4,7 @@ Poseidon 是一个单进程、不对称多线程、多协程的游戏服务端
本框架用 C++ 编写,大部分特性需要 C++11 支持。在编译器支持 GNU 扩展的情况下可以在 GNU++98 标准下编译(此情况不保证和 C++11 编译版本的二进制兼容性)。
本框架用 C++ 编写,大部分特性需要 C++11 支持。在编译器支持 GNU 扩展的情况下可以在 GNU++98 标准下编译(此情况不保证和 C++11 编译版本的二进制兼容性)。
###
## 框架提供的线程
## 框架提供的线程
1.
主线程
1.
主线程
只有一个,提供任务调度。用户业务主要由主线程完成。
只有一个,提供任务调度。用户业务主要由主线程完成。
...
@@ -21,62 +21,148 @@ Poseidon 是一个单进程、不对称多线程、多协程的游戏服务端
...
@@ -21,62 +21,148 @@ Poseidon 是一个单进程、不对称多线程、多协程的游戏服务端
7.
MongoDB 线程
7.
MongoDB 线程
按需创建,为对称多线程机制,提供对 MongoDB 数据库的连接、查询等功能。
按需创建,为对称多线程机制,提供对 MongoDB 数据库的连接、查询等功能。
##### 支持的网络协议
## 按功能分类的源代码目录结构
1.
TCP(内置 SSL 支持)
1.
CBPP(压缩的二进制协议,具有极小的 I/O 开销)
2.
HTTP 1.1
3.
WebSocket 13
2.
UDP
##### 辅助功能
1.
通用
1.
系统服务
1.
基于 GNU++98 的 C++11 兼容层
1.
基于带索引的协程的任务队列 [[src/singletons/job_dispatcher.hpp]]
2.
RAII 包装器(UniqueHandle)
2.
基于 RTTI 的事件通知机制
3.
可指向字符串字面量的零结尾字符串(SharedNts)
1.
抽象事件(基础组件) [[src/event_base.hpp]]
4.
基于 SharedNts 的异常
2.
事件分发器 [[src/singletons/event_dispatcher.hpp]]
5.
SharedNts-std::string 字典
3.
可热加载的动态库管理器(不支持热卸载)
6.
64 位线性同余随机数发生器(LCRNG)
1.
配置文件加载器 [[src/module_config.hpp]]
7.
标准 errno 的查询和格式化
2.
静态初始化支持 [[src/module_raii.hpp]]
8.
常见字符串处理函数
3.
动态库管理器 [[src/singletons/module_depository.hpp]]
9.
支持多个索引的容器(对 boost::multi_index_container 的封装)
4.
支持 ANSI 颜色的跟踪日志系统 [[src/log.hpp]]
10.
UTC 时间和本地时间获取及互转
5.
性能工具
11.
UUID
1.
函数执行时间测量工具 [[src/profiler.hpp]]
12.
可变长度带符号和无符号的 64 位整数压缩及解压
2.
性能数据存储 [[src/singletons/profile_depository.hpp]]
13.
支持类型擦除的 shared_from_this
6.
定时器服务 [[src/singletons/timer_daemon.hpp]]
14.
基于块链和内存池的 StreamBuffer(内存缓冲器)
7.
主配置文件 [[src/singltons/main_config.hpp]]
15.
基于 StreamBuffer 的标准格式化流(std::istream, std::ostream, std::iostream)
8.
系统管理 HTTP 接口 [[src/singletons/system_http_server.hpp]]
16.
原子整数操作
2.
网络服务
17.
带进位检测的无符号整数运算
1.
地址
18.
小端序和大端序互转
1.
IP 地址格式化和转换 [[src/ip_port.hpp]]
19.
无符号整数掩码操作
2.
Socket 地址格式化和转换 [[src/sock_addr.hpp]]
2.
服务
3.
DNS 查询服务 [[src/singletons/dns_daemon.hpp]]
1.
基于 RTTI 的事件通知机制
2.
Socket(基础组件) [[src/socket_base.hpp]]
2.
可热加载的动态库管理器(不支持热卸载)
3.
基于 epoll 的网络调度服务 [[src/singletons/epoll_daemon.hpp]]
3.
支持 ANSI 颜色的日志系统
4.
抽象会话(基础组件) [[src/session_base.hpp]]
4.
函数执行时间测量工具
5.
TCP
3.
协程
1.
会话(基础组件) [[src/tcp_session_base.hpp]]
1.
自定义协程和异步函数(用于封装异步调用)
2.
SSL(基础组件)
2.
用于协程同步的 promise-future
1.
RAII 包装器 [[src/ssl_raii.hpp]]
4.
线程
2.
加密解密器 [[src/ssl_filter_base.hpp]]
1.
线程
3.
连接器和接收器 [[src/ssl_factories.hpp]]
2.
线程级别互斥锁
3.
服务器(基础组件) [[src/tcp_server_base.hpp]]
3.
线程级别递归互斥锁
4.
客户端(基础组件) [[src/tcp_client_base.hpp]]
4.
线程级别条件变量
5.
CBPP(压缩的二进制协议,具有极小的 I/O 开销)
5.
二进制数据处理
1.
协议特定异常 [[src/cbpp/exception.hpp]]
1.
Base64 编码和解码
2.
编码器(基础组件) [[src/cbpp/writer.hpp]]
2.
十六进制编码和解码
3.
解码器(基础组件) [[src/cbpp/reader.hpp]]
3.
基于 zlib 的压缩和解压
4.
基本服务器会话(消息直接在网络线程处理,不和主线程交互) [[src/cbpp/low_level_session.hpp]]
6.
散列函数
5.
基本客户端会话(消息直接在网络线程处理,不和主线程交互) [[src/cbpp/low_level_client.hpp]]
1.
基于 std::ostream 的 CRC-32 计算器
6.
服务器会话(消息转发给主线程处理) [[src/cbpp/session.hpp]]
2.
基于 std::ostream 的 MD5 计算器
7.
客户端会话(消息转发给主线程处理) [[src/cbpp/client.hpp]]
3.
基于 std::ostream 的 SHA-1 计算器
8.
内置状态码 [[src/cbpp/status_codes.hpp]]
4.
基于 std::ostream 的 SHA-256 计算器
9.
抽象消息 [[src/cbpp/message_base.hpp]]
7.
序列化
10.
对象关系映射(ORM)生成器 [[src/cbpp/message_generator.hpp]]
1.
一种简单的、单一层次的配置文件解析
2.
HTTP
2.
CSV 格式文档解析和生成
1.
协议特定异常 [[src/http/exception.hpp]]
3.
JSON 编码和解码
2.
服务器编码器(基础组件) [[src/http/server_writer.hpp]]
3.
服务器解码器(基础组件) [[src/http/server_reader.hpp]]
4.
客户端编码器(基础组件) [[src/http/client_writer.hpp]]
5.
客户端解码器(基础组件) [[src/http/client_reader.hpp]]
6.
基本服务器会话(消息直接在网络线程处理,不和主线程交互) [[src/http/low_level_session.hpp]]
7.
基本客户端会话(消息直接在网络线程处理,不和主线程交互) [[src/http/low_level_client.hpp]]
8.
服务器会话(消息转发给主线程处理) [[src/http/session.hpp]]
9.
客户端会话(消息转发给主线程处理) [[src/http/client.hpp]]
10.
谓词定义和格式化 [[src/http/verbs.hpp]]
11.
内置状态码 [[src/http/status_codes.hpp]]
12.
请求报头 [[src/http/request_headers.hpp]]
13.
响应报头 [[src/http/response_headers.hpp]]
14.
报头参数 [[src/http/header_option.hpp]]
15.
认证 [[src/http/authorization.hpp]]
16.
urlencoded 编码解码器 [[src/http/urlencoded.hpp]]
17.
multipart 编码解码器 [[src/http/multipart.hpp]]
18.
URL 参数类型转换器 [[src/http/url_param.hpp]]
19.
升级的会话(基础组件) [[src/http/upgraded_session_base.hpp]]
3.
WebSocket
1.
协议特定异常 [[src/websocket/exception.hpp]]
2.
编码器(基础组件) [[src/websocket/writer.hpp]]
3.
解码器(基础组件) [[src/websocket/reader.hpp]]
4.
基本服务器会话(消息直接在网络线程处理,不和主线程交互) [[src/websocket/low_level_session.hpp]]
5.
基本客户端会话(消息直接在网络线程处理,不和主线程交互) [[src/websocket/low_level_client.hpp]]
6.
服务器会话(消息转发给主线程处理) [[src/websocket/session.hpp]]
7.
客户端会话(消息转发给主线程处理) [[src/websocket/client.hpp]]
8.
内置状态码 [[src/websocket/status_codes.hpp]]
9.
消息操作码 [[src/websocket/opcodes.hpp]]
10.
基于 HTTP 的握手响应创建及校验 [[src/websocket/handshake.hpp]]
6.
UDP
1.
服务器(基础组件) [[src/udp_server_base.hpp]]
3.
数据库服务
1.
文件系统服务 [[src/singletons/filesystem_daemon.hpp]]
2.
MySQL
1.
数据库特定异常 [[src/mysql/exception.hpp]]
2.
数据对象基类 [[src/mysql/object_base.hpp]]
3.
对象关系映射(ORM)生成器 [[src/mysql/object_generator.hpp]]
4.
数据库连接 [[src/mysql/connection.hpp]]
5.
线程局部初始化器(基础组件) [[src/mysql/thread_context.hpp]]
6.
SQL 格式化工具 [[src/mysql/formatting.hpp]]
7.
数据库服务 [[src/singletons/mysql_daemon.hpp]]
3.
MongoDB
1.
数据库特定异常 [[src/mongodb/exception.hpp]]
2.
数据对象基类 [[src/mongodb/object_base.hpp]]
3.
对象关系映射(ORM)生成器 [[src/mongodb/object_generator.hpp]]
4.
数据库连接 [[src/mongodb/connection.hpp]]
5.
BSON 编码器 [[src/mongodb/bson_builder.hpp]]
6.
数据库服务 [[src/singletons/mongodb_daemon.hpp]]
4.
协程
1.
自定义协程
1.
抽象协程(基础组件) [[src/job_base.hpp]]
2.
简单异步函数 [[src/async_job.hpp]]
2.
用于协程同步的 promise-future [[src/job_promise.hpp]]
5.
线程
1.
自定义线程 [[src/thread.hpp]]
2.
线程级别互斥锁 [[src/mutex.hpp]]
3.
线程级别条件变量 [[src/condition_variable.hpp]]
4.
线程级别递归互斥锁 [[src/recursive_mutex.hpp]]
6.
二进制数据处理
1.
Base64 编码解码器 [[src/base64.hpp]]
2.
十六进制编码解码器 [[src/hex.hpp]]
3.
基于 zlib 的压缩解压器 [[src/zlib.hpp]]
7.
散列函数
1.
基于 std::ostream 的 CRC-32 计算器 [[src/crc32.hpp]]
2.
基于 std::ostream 的 MD5 计算器 [[src/md5.hpp]]
3.
基于 std::ostream 的 SHA-1 计算器 [[src/sha1.hpp]]
4.
基于 std::ostream 的 SHA-256 计算器 [[src/sha256.hpp]]
8.
序列化
1.
一种简单的、单一层次的配置文件解码器 [[src/config_file.hpp]]
2.
CSV 格式文档编码解码器 [[src/csv_document.hpp]]
3.
JSON 编码解码器 [[src/json.hpp]]
9.
辅助功能
1.
基于 GNU++98 的 C++11 兼容层 [[src/cxx_ver.hpp]]
2.
C++ 语言实用工具 [[src/cxx_util.hpp]]
3.
RAII 包装器 [[src/raii.hpp]]
4.
支持所有权擦除的零结尾字符串(SharedNts) [[src/shared_nts.hpp]]
5.
基于 SharedNts 的异常
1.
基础异常 [[src/exception.hpp]]
2.
协议异常 [[src/protocol_exception.hpp]]
3.
系统异常(封装 errno 查询) [[src/system_exception.hpp]]
6.
SharedNts-std::string 字典 [[src/optional_map.hpp]]
7.
64 位线性同余随机数发生器(LCRNG) [[src/random.hpp]]
8.
标准 errno 的查询和格式化 [[src/errno.hpp]]
9.
常见字符串处理函数 [[src/string.hpp]]
10.
基于 boost::multi_index_container 的支持多个索引的容器 [[src/multi_index_map.hpp]]
11.
日期时间格式化和解析 [[src/time.hpp]]
12.
UUID [[src/uuid.hpp]]
13.
可变长度带符号和无符号的 64 位整数压缩及解压 [[src/vint64.hpp]]
14.
支持类型擦除的 enable_shared_from_this [[src/virtual_shared_from_this.hpp]]
15.
基于块链和内存池的内存缓冲器(StreamBuffer) [[src/stream_buffer.hpp]]
16.
基于 std::(i|o|io)stream 和 StreamBuffer 的标准格式化流 [[src/buffer_streams.hpp]]
17.
原子整数操作 [[src/atomic.hpp]]
18.
带进位检测的无符号整数运算 [[src/checked_arithmetic.hpp]]
19.
小端序和大端序互转 [[src/endian.hpp]]
20.
无符号整数掩码操作 [[src/flags.hpp]]
## 源码目录结构
## 源码目录结构
...
@@ -101,5 +187,3 @@ Poseidon 是一个单进程、不对称多线程、多协程的游戏服务端
...
@@ -101,5 +187,3 @@ Poseidon 是一个单进程、不对称多线程、多协程的游戏服务端
+--[#] run_server.sh 在工作目录中启动程序的脚本
+--[#] run_server.sh 在工作目录中启动程序的脚本
+--[#] makedeb.sh 制作 Debian 安装包的脚本
+--[#] makedeb.sh 制作 Debian 安装包的脚本
```
```
## 按功能分类的源代码目录结构