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

服务器会话池管理类。 More...

#include <server_session_pool.h>

Static Public Member Functions

static int32_t connection_count (i32_serverid aserverid)
 计算到指定服务器应建立的连接数。
static void add (i32_serverid aserverid, i32_sessionid asession)
 添加一条连接到服务器的连接池。
static void remove (i32_sessionid asession)
 移除断开的连接。
static i32_sessionid sessionid (i32_serverid aserverid, i64_actorid aactorid)
 按 actor_id hash 选择连接(核心路由)。
static i32_sessionid sessionid (i32_serverid aserverid)
 兼容旧接口:无 actor_id 时取第一条可用连接。
static i32_serverid serverid (i32_sessionid asessionid)
 反向查找:会话 → 服务器ID。
static int32_t active_count (i32_serverid aserverid)
 获取服务器当前活跃连接数。

Static Public Attributes

static constexpr int32_t connection_multiplier = 2
 连接数倍率常量。

Detailed Description

服务器会话池管理类。

管理服务器间的多连接池,通过按Actor ID哈希选择连接来分散IO负载。 主要功能包括:

  • 维护每个服务器的连接池
  • 根据Actor ID进行连接选择(负载均衡)
  • 支持连接的动态添加和移除
  • 提供连接数统计和查询
Note
该类不可实例化,所有方法都是静态的。
使用读写锁保护连接池,支持并发访问。
连接数倍率可通过connection_multiplier配置。

Member Function Documentation

◆ active_count()

int32_t ngl::server_session_pool::active_count ( i32_serverid aserverid)
static

获取服务器当前活跃连接数。

Parameters
aserverid服务器ID
Returns
当前活跃的连接数

◆ add()

void ngl::server_session_pool::add ( i32_serverid aserverid,
i32_sessionid asession )
static

添加一条连接到服务器的连接池。

Parameters
aserverid目标服务器ID
asession网络会话ID

◆ connection_count()

int32_t ngl::server_session_pool::connection_count ( i32_serverid aserverid)
static

计算到指定服务器应建立的连接数。

Parameters
aserverid目标服务器ID
Returns
应建立的连接数

◆ remove()

void ngl::server_session_pool::remove ( i32_sessionid asession)
static

移除断开的连接。

Parameters
asession要移除的会话ID

◆ serverid()

i32_serverid ngl::server_session_pool::serverid ( i32_sessionid asessionid)
static

反向查找:会话 → 服务器ID。

Parameters
asessionid网络会话ID
Returns
对应的服务器ID,如果不存在返回-1

◆ sessionid() [1/2]

i32_sessionid ngl::server_session_pool::sessionid ( i32_serverid aserverid)
static

兼容旧接口:无 actor_id 时取第一条可用连接。

Parameters
aserverid目标服务器ID
Returns
第一条可用的会话ID,若未找到有效会话则返回 -1

◆ sessionid() [2/2]

i32_sessionid ngl::server_session_pool::sessionid ( i32_serverid aserverid,
i64_actorid aactorid )
static

按 actor_id hash 选择连接(核心路由)。

根据Actor ID的哈希值选择连接,实现IO负载分散。

Parameters
aserverid目标服务器ID
aactoridActor ID,用于哈希选择
Returns
选择的会话ID,若未找到有效会话则返回 -1

Member Data Documentation

◆ connection_multiplier

int32_t ngl::server_session_pool::connection_multiplier = 2
staticconstexpr

连接数倍率常量。

连接数 = 对端服务器的线程数 * connection_multiplier 用于计算到指定服务器应建立的连接数。


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