ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
ngl::nnet Class Reference

网络管理器单例,统一管理TCP和WebSocket连接。 More...

#include <nnet.h>

Public Member Functions

ENET_PROTOCOL protocol (i32_sessionid asession) const
 获取指定会话的网络协议类型。
bpoolpool ()
 获取默认的TCP连接池(用于pack分配)。
bpoolpool (ENET_PROTOCOL aprotocol)
 获取指定协议的连接池。
bpoolpool (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 ()
 获取网络管理器单例实例。

Detailed Description

网络管理器单例,统一管理TCP和WebSocket连接。

该类提供了统一的网络通信接口,支持TCP和WebSocket两种协议。 通过协议类型自动选择底层实现,实现协议无关的消息发送。 主要功能包括:

  • 连接管理和会话维护
  • 消息序列化和发送
  • 跨服务器通信
  • 连接池管理

Member Function Documentation

◆ close()

void ngl::nnet::close ( i32_sessionid asession)

关闭指定会话的连接。

Parameters
asession会话ID

◆ close_net()

void ngl::nnet::close_net ( i32_sessionid asession)

关闭指定会话的网络连接(不清理会话状态)。

Parameters
asession会话ID

◆ instance()

nnet & ngl::nnet::instance ( )
inlinestatic

获取网络管理器单例实例。

Returns
nnet& 单例引用

◆ pool() [1/3]

bpool & ngl::nnet::pool ( )

获取默认的TCP连接池(用于pack分配)。

Returns
bpool& 连接池引用

◆ pool() [2/3]

bpool & ngl::nnet::pool ( ENET_PROTOCOL aprotocol)

获取指定协议的连接池。

Parameters
aprotocol协议类型(TCP或WebSocket)
Returns
bpool& 连接池引用

◆ pool() [3/3]

bpool & ngl::nnet::pool ( i32_sessionid asession)

获取指定会话的连接池。

Parameters
asession会话ID
Returns
bpool& 连接池引用

◆ protocol()

ENET_PROTOCOL ngl::nnet::protocol ( i32_sessionid asession) const

获取指定会话的网络协议类型。

Parameters
asession会话ID
Returns
ENET_PROTOCOL 协议类型(TCP或WebSocket)

◆ send() [1/5]

template<typename Y, typename T = Y>
bool ngl::nnet::send ( const std::map< i32_sessionid, i64_actorid > & asession,
const Y & adata,
i64_actorid aactorid )
inline

向多个会话发送数据(带actor映射)。

Template Parameters
Y数据类型,通常是Protobuf消息或自定义结构体
T序列化类型,默认与Y相同,可用于指定不同的序列化方式
Parameters
asession会话ID到actorID的映射,用于批量发送
adata要发送的数据,必须支持序列化
aactorid发送方actorID,用于消息路由
Returns
bool 发送是否成功
Note
自动序列化数据并创建协议包

◆ send() [2/5]

bool ngl::nnet::send ( const std::map< i32_sessionid, i64_actorid > & asession,
i64_actorid aactorid,
std::shared_ptr< pack > & apack )

向多个会话发送协议包(带actor映射)。

Parameters
asession会话ID到actorID的映射
aactorid发送方actorID
apack协议包智能指针
Returns
bool 发送是否成功

◆ send() [3/5]

template<typename Y, typename T = Y>
bool ngl::nnet::send ( const std::set< i32_sessionid > & asession,
const Y & adata,
i64_actorid aactorid,
i64_actorid arequestactorid )
inline

向多个会话发送数据。

Template Parameters
Y数据类型,通常是Protobuf消息或自定义结构体
T序列化类型,默认与Y相同,可用于指定不同的序列化方式
Parameters
asession会话ID集合,用于批量发送
adata要发送的数据,必须支持序列化
aactorid发送方actorID,用于消息路由
arequestactorid请求方actorID,用于请求-响应匹配
Returns
bool 发送是否成功
Note
自动序列化数据并创建协议包

◆ send() [4/5]

bool ngl::nnet::send ( const std::set< i32_sessionid > & asession,
i64_actorid aactorid,
i64_actorid arequestactorid,
std::shared_ptr< pack > & apack )

向多个会话发送协议包。

Parameters
asession会话ID集合
aactorid发送方actorID
arequestactorid请求方actorID
apack协议包智能指针
Returns
bool 发送是否成功

◆ send() [5/5]

template<typename Y, typename T = Y>
bool ngl::nnet::send ( i32_sessionid asession,
const Y & adata,
i64_actorid aactorid,
i64_actorid arequestactorid )
inline

向指定会话发送数据(自动选择协议)。

Template Parameters
Y数据类型,通常是Protobuf消息或自定义结构体
T序列化类型,默认与Y相同,可用于指定不同的序列化方式
Parameters
asession会话ID,标识网络连接
adata要发送的数据,必须支持序列化
aactorid发送方actorID,用于消息路由
arequestactorid请求方actorID,用于请求-响应匹配
Returns
bool 发送是否成功
Note
根据会话协议自动选择TCP或WebSocket实现

◆ send_msg()

bool ngl::nnet::send_msg ( i32_sessionid asession,
const std::string & amsg )

向指定会话发送字符串消息。

Parameters
asession会话ID
amsg消息内容
Returns
bool 发送是否成功

◆ send_pack() [1/2]

bool ngl::nnet::send_pack ( i32_sessionid asession,
std::shared_ptr< pack > & apack )

向指定会话发送协议包。

Parameters
asession会话ID
apack协议包智能指针
Returns
bool 发送是否成功

◆ send_pack() [2/2]

bool ngl::nnet::send_pack ( i32_sessionid asession,
std::shared_ptr< void > & apack )

向指定会话发送通用数据包。

Parameters
asession会话ID
apack数据包智能指针
Returns
bool 发送是否成功

◆ send_server() [1/4]

template<typename Y, typename T = Y>
bool ngl::nnet::send_server ( const std::set< i32_serverid > & aserverids,
const Y & adata,
i64_actorid aactorid,
i64_actorid arequestactorid )
inline

向多个服务器发送数据。

Template Parameters
Y数据类型,通常是Protobuf消息或自定义结构体
T序列化类型,默认与Y相同,可用于指定不同的序列化方式
Parameters
aserverids服务器ID集合,用于批量发送
adata要发送的数据,必须支持序列化
aactorid发送方actorID,用于消息路由
arequestactorid请求方actorID,用于请求-响应匹配
Returns
bool 发送是否成功
Note
遍历所有服务器,为每个服务器查找会话并发送数据

◆ send_server() [2/4]

template<typename Y, typename T = Y>
bool ngl::nnet::send_server ( i32_serverid aserverid,
const Y & adata,
i64_actorid aactorid,
i64_actorid arequestactorid )
inline

向指定服务器发送数据。

Template Parameters
Y数据类型,通常是Protobuf消息或自定义结构体
T序列化类型,默认与Y相同,可用于指定不同的序列化方式
Parameters
aserverid服务器ID,用于查找对应的会话
adata要发送的数据,必须支持序列化
aactorid发送方actorID,用于消息路由
arequestactorid请求方actorID,用于请求-响应匹配
Returns
bool 发送是否成功
Note
通过服务器ID查找会话,然后发送数据

◆ send_server() [3/4]

bool ngl::nnet::send_server ( i32_serverid aserverid,
std::shared_ptr< pack > & apack )

向指定服务器发送协议包。

Parameters
aserverid服务器ID
apack协议包智能指针
Returns
bool 发送是否成功

◆ send_server() [4/4]

bool ngl::nnet::send_server ( i32_serverid aserverid,
std::shared_ptr< void > & apack )

向指定服务器发送通用数据包。

Parameters
aserverid服务器ID
apack数据包智能指针
Returns
bool 发送是否成功

The documentation for this class was generated from the following files: