|
ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
|
声明socket会话ID范围的辅助函数。 More...
Enumerations | |
| enum | : i32_sessionid { ngl::net_session::session_begin_tcp = 1 , ngl::net_session::session_begin_ws = 0x10000000 } |
| 会话ID起始值枚举。 More... | |
Functions | |
| constexpr i32_sessionid | ngl::net_session::begin (ENET_PROTOCOL aprotocol) |
| 获取指定协议的会话ID起始值。 | |
| constexpr i32_sessionid | ngl::net_session::end (ENET_PROTOCOL aprotocol) |
| 获取指定协议的会话ID结束值。 | |
| template<typename FOCCUPIED> | |
| bool | ngl::net_session::next (i32_sessionid &asessionid, ENET_PROTOCOL aprotocol, FOCCUPIED &&aoccupied) |
| 生成下一个可用的会话ID(环绕复用 + 占用跳过)。 | |
| constexpr ENET_PROTOCOL | ngl::net_session::protocol (i32_sessionid asessionid) |
| 根据会话ID识别网络协议类型。 | |
声明socket会话ID范围的辅助函数。
本文件提供了网络会话ID的管理功能,包括:
会话ID用于唯一标识网络连接,不同协议使用不同的ID范围以避免冲突。
| anonymous enum : i32_sessionid |
|
constexpr |
获取指定协议的会话ID起始值。
| aprotocol | 网络协议类型 |
|
constexpr |
获取指定协议的会话ID结束值。
| aprotocol | 网络协议类型 |
|
inline |
生成下一个可用的会话ID(环绕复用 + 占用跳过)。
在协议范围 [begin, end] 内单调递增分配,到达上限后绕回起始值, 并跳过 aoccupied 判定为仍在使用的ID,从而实现会话ID的循环复用, 避免长期运行后32位ID耗尽。仅当整个区间被并发连接占满时才返回false。
| FOCCUPIED | 形如 bool(i32_sessionid) 的可调用对象,返回该ID是否仍被占用 |
| asessionid | 输入输出参数,上次分配的会话ID,成功时更新为本次分配的ID |
| aprotocol | 网络协议类型 |
| aoccupied | 占用判定回调,返回true表示该ID仍在使用、需跳过 |
|
constexpr |
根据会话ID识别网络协议类型。
通过会话ID的范围判断其所属的网络协议类型。
| asessionid | 会话ID |