|
ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
|
网络管理器单例,统一管理TCP和WebSocket连接。 More...
#include <nnet.h>
Public Member Functions | |
| ENET_PROTOCOL | protocol (i32_sessionid asession) const |
| 获取指定会话的网络协议类型。 | |
| bpool & | pool () |
| 获取默认的TCP连接池(用于pack分配)。 | |
| bpool & | pool (ENET_PROTOCOL aprotocol) |
| 获取指定协议的连接池。 | |
| bpool & | pool (i32_sessionid asession) |
| 获取指定会话的连接池。 | |
| void | close (i32_sessionid asession) |
| 关闭指定会话的连接。 | |
| void | close_net (i32_sessionid asession) |
| 关闭指定会话的网络连接(不清理会话状态)。 | |
| bool | send_msg (i32_sessionid asession, const std::string &amsg) |
| 向指定会话发送字符串消息。 | |
| bool | send_pack (i32_sessionid asession, std::shared_ptr< pack > &apack) |
| 向指定会话发送协议包。 | |
| bool | send_pack (i32_sessionid asession, std::shared_ptr< void > &apack) |
| 向指定会话发送通用数据包。 | |
| bool | send_server (i32_serverid aserverid, std::shared_ptr< pack > &apack) |
| 向指定服务器发送协议包。 | |
| bool | send_server (i32_serverid aserverid, std::shared_ptr< void > &apack) |
| 向指定服务器发送通用数据包。 | |
| bool | send (const std::map< i32_sessionid, i64_actorid > &asession, i64_actorid aactorid, std::shared_ptr< pack > &apack) |
| 向多个会话发送协议包(带actor映射)。 | |
| bool | send (const std::set< i32_sessionid > &asession, i64_actorid aactorid, i64_actorid arequestactorid, std::shared_ptr< pack > &apack) |
| 向多个会话发送协议包。 | |
| template<typename Y, typename T = Y> | |
| bool | send (i32_sessionid asession, const Y &adata, i64_actorid aactorid, i64_actorid arequestactorid) |
| 向指定会话发送数据(自动选择协议)。 | |
| template<typename Y, typename T = Y> | |
| bool | send (const std::map< i32_sessionid, i64_actorid > &asession, const Y &adata, i64_actorid aactorid) |
| 向多个会话发送数据(带actor映射)。 | |
| template<typename Y, typename T = Y> | |
| bool | send (const std::set< i32_sessionid > &asession, const Y &adata, i64_actorid aactorid, i64_actorid arequestactorid) |
| 向多个会话发送数据。 | |
| template<typename Y, typename T = Y> | |
| bool | send_server (i32_serverid aserverid, const Y &adata, i64_actorid aactorid, i64_actorid arequestactorid) |
| 向指定服务器发送数据。 | |
| template<typename Y, typename T = Y> | |
| bool | send_server (const std::set< i32_serverid > &aserverids, const Y &adata, i64_actorid aactorid, i64_actorid arequestactorid) |
| 向多个服务器发送数据。 | |
Static Public Member Functions | |
| static nnet & | instance () |
| 获取网络管理器单例实例。 | |
网络管理器单例,统一管理TCP和WebSocket连接。
该类提供了统一的网络通信接口,支持TCP和WebSocket两种协议。 通过协议类型自动选择底层实现,实现协议无关的消息发送。 主要功能包括:
| void ngl::nnet::close | ( | i32_sessionid | asession | ) |
关闭指定会话的连接。
| asession | 会话ID |
| void ngl::nnet::close_net | ( | i32_sessionid | asession | ) |
关闭指定会话的网络连接(不清理会话状态)。
| asession | 会话ID |
|
inlinestatic |
获取网络管理器单例实例。
| bpool & ngl::nnet::pool | ( | ) |
获取默认的TCP连接池(用于pack分配)。
| bpool & ngl::nnet::pool | ( | ENET_PROTOCOL | aprotocol | ) |
获取指定协议的连接池。
| aprotocol | 协议类型(TCP或WebSocket) |
| bpool & ngl::nnet::pool | ( | i32_sessionid | asession | ) |
获取指定会话的连接池。
| asession | 会话ID |
| ENET_PROTOCOL ngl::nnet::protocol | ( | i32_sessionid | asession | ) | const |
获取指定会话的网络协议类型。
| asession | 会话ID |
|
inline |
向多个会话发送数据(带actor映射)。
| Y | 数据类型,通常是Protobuf消息或自定义结构体 |
| T | 序列化类型,默认与Y相同,可用于指定不同的序列化方式 |
| asession | 会话ID到actorID的映射,用于批量发送 |
| adata | 要发送的数据,必须支持序列化 |
| aactorid | 发送方actorID,用于消息路由 |
| bool ngl::nnet::send | ( | const std::map< i32_sessionid, i64_actorid > & | asession, |
| i64_actorid | aactorid, | ||
| std::shared_ptr< pack > & | apack ) |
向多个会话发送协议包(带actor映射)。
| asession | 会话ID到actorID的映射 |
| aactorid | 发送方actorID |
| apack | 协议包智能指针 |
|
inline |
向多个会话发送数据。
| Y | 数据类型,通常是Protobuf消息或自定义结构体 |
| T | 序列化类型,默认与Y相同,可用于指定不同的序列化方式 |
| asession | 会话ID集合,用于批量发送 |
| adata | 要发送的数据,必须支持序列化 |
| aactorid | 发送方actorID,用于消息路由 |
| arequestactorid | 请求方actorID,用于请求-响应匹配 |
| bool ngl::nnet::send | ( | const std::set< i32_sessionid > & | asession, |
| i64_actorid | aactorid, | ||
| i64_actorid | arequestactorid, | ||
| std::shared_ptr< pack > & | apack ) |
向多个会话发送协议包。
| asession | 会话ID集合 |
| aactorid | 发送方actorID |
| arequestactorid | 请求方actorID |
| apack | 协议包智能指针 |
|
inline |
向指定会话发送数据(自动选择协议)。
| Y | 数据类型,通常是Protobuf消息或自定义结构体 |
| T | 序列化类型,默认与Y相同,可用于指定不同的序列化方式 |
| asession | 会话ID,标识网络连接 |
| adata | 要发送的数据,必须支持序列化 |
| aactorid | 发送方actorID,用于消息路由 |
| arequestactorid | 请求方actorID,用于请求-响应匹配 |
| bool ngl::nnet::send_msg | ( | i32_sessionid | asession, |
| const std::string & | amsg ) |
向指定会话发送字符串消息。
| asession | 会话ID |
| amsg | 消息内容 |
| bool ngl::nnet::send_pack | ( | i32_sessionid | asession, |
| std::shared_ptr< pack > & | apack ) |
向指定会话发送协议包。
| asession | 会话ID |
| apack | 协议包智能指针 |
| bool ngl::nnet::send_pack | ( | i32_sessionid | asession, |
| std::shared_ptr< void > & | apack ) |
向指定会话发送通用数据包。
| asession | 会话ID |
| apack | 数据包智能指针 |
|
inline |
向多个服务器发送数据。
| Y | 数据类型,通常是Protobuf消息或自定义结构体 |
| T | 序列化类型,默认与Y相同,可用于指定不同的序列化方式 |
| aserverids | 服务器ID集合,用于批量发送 |
| adata | 要发送的数据,必须支持序列化 |
| aactorid | 发送方actorID,用于消息路由 |
| arequestactorid | 请求方actorID,用于请求-响应匹配 |
|
inline |
向指定服务器发送数据。
| Y | 数据类型,通常是Protobuf消息或自定义结构体 |
| T | 序列化类型,默认与Y相同,可用于指定不同的序列化方式 |
| aserverid | 服务器ID,用于查找对应的会话 |
| adata | 要发送的数据,必须支持序列化 |
| aactorid | 发送方actorID,用于消息路由 |
| arequestactorid | 请求方actorID,用于请求-响应匹配 |
| bool ngl::nnet::send_server | ( | i32_serverid | aserverid, |
| std::shared_ptr< pack > & | apack ) |
向指定服务器发送协议包。
| aserverid | 服务器ID |
| apack | 协议包智能指针 |
| bool ngl::nnet::send_server | ( | i32_serverid | aserverid, |
| std::shared_ptr< void > & | apack ) |
向指定服务器发送通用数据包。
| aserverid | 服务器ID |
| apack | 数据包智能指针 |