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

KCP会话管理类。 More...

#include <kcp_session.h>

Public Types

enum  { ekcp_update_intervalms = 10 }
 KCP配置常量枚举。 More...

Public Member Functions

 kcp_session (asio_kcp *asiokcp)
 构造函数。
std::shared_ptr< kcp_endpointadd_kcp_endpoint (int32_t aconv, const char *aip, i16_port aport, i64_actorid aactoridserver, i64_actorid aactoridclient)
 通过IP和端口添加KCP端点。
std::shared_ptr< kcp_endpointadd (int32_t aconv, const basio::ip::udp::endpoint &aendpoint, i64_actorid aactoridserver, i64_actorid aactoridclient)
 通过UDP端点添加KCP端点。
std::shared_ptr< kcp_endpointreset_add (int32_t aconv, const basio::ip::udp::endpoint &aendpoint, i64_actorid aactoridserver, i64_actorid aactoridclient)
 重置并添加KCP端点(用于重连)。
void erasebysession (i32_sessionid asession)
 根据会话ID移除KCP端点。
void erasebyaactorid (i64_actorid aactorid)
 根据Actor ID移除KCP端点。
std::shared_ptr< kcp_endpointfind (i32_sessionid asession)
 根据会话ID查找KCP端点。
std::shared_ptr< kcp_endpointfindbyactorid (i64_actorid aactorid)
 根据Actor ID查找KCP端点。
std::shared_ptr< kcp_endpointfind (const basio::ip::udp::endpoint &aendpoint)
 根据UDP端点查找KCP端点。
void foreach (const std::function< void(std::shared_ptr< kcp_endpoint > &)> &acall)
 遍历所有KCP端点。
void foreachbyarea (i16_area aarea, const std::function< void(std::shared_ptr< kcp_endpoint > &)> &acall)
 按区域遍历KCP端点。

Detailed Description

KCP会话管理类。

管理所有KCP端点的创建、销毁和查找,维护多个索引表以支持高效的查询。 主要职责包括:

  • 维护会话ID到KCP端点的映射
  • 维护Actor ID到会话ID的映射
  • 维护IP/端口到KCP端点的映射
  • 提供线程安全的会话操作
  • 支持按区域遍历KCP会话
Note
该类不可复制,不可默认构造,必须通过asio_kcp实例构造。
使用std::shared_mutex保护所有查找表,支持并发访问。

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

KCP配置常量枚举。

Enumerator
ekcp_update_intervalms 

KCP update调用间隔(毫秒)

Constructor & Destructor Documentation

◆ kcp_session()

ngl::kcp_session::kcp_session ( asio_kcp * asiokcp)

构造函数。

Parameters
asiokcp所属的asio_kcp传输实例指针

Member Function Documentation

◆ add()

std::shared_ptr< kcp_endpoint > ngl::kcp_session::add ( int32_t aconv,
const basio::ip::udp::endpoint & aendpoint,
i64_actorid aactoridserver,
i64_actorid aactoridclient )

通过UDP端点添加KCP端点。

Parameters
aconvKCP会话标识
aendpointUDP端点
aactoridserver服务端Actor ID
aactoridclient客户端Actor ID
Returns
创建的KCP端点共享指针

◆ add_kcp_endpoint()

std::shared_ptr< kcp_endpoint > ngl::kcp_session::add_kcp_endpoint ( int32_t aconv,
const char * aip,
i16_port aport,
i64_actorid aactoridserver,
i64_actorid aactoridclient )

通过IP和端口添加KCP端点。

Parameters
aconvKCP会话标识
aip远端IP地址
aport远端端口号
aactoridserver服务端Actor ID
aactoridclient客户端Actor ID
Returns
创建的KCP端点共享指针

◆ erasebyaactorid()

void ngl::kcp_session::erasebyaactorid ( i64_actorid aactorid)

根据Actor ID移除KCP端点。

Parameters
aactorid要移除的Actor ID

◆ erasebysession()

void ngl::kcp_session::erasebysession ( i32_sessionid asession)

根据会话ID移除KCP端点。

Parameters
asession要移除的会话ID

◆ find() [1/2]

std::shared_ptr< kcp_endpoint > ngl::kcp_session::find ( const basio::ip::udp::endpoint & aendpoint)

根据UDP端点查找KCP端点。

Parameters
aendpointUDP端点
Returns
找到的端点共享指针,不存在返回nullptr

◆ find() [2/2]

std::shared_ptr< kcp_endpoint > ngl::kcp_session::find ( i32_sessionid asession)

根据会话ID查找KCP端点。

Parameters
asession会话ID
Returns
找到的端点共享指针,不存在返回nullptr

◆ findbyactorid()

std::shared_ptr< kcp_endpoint > ngl::kcp_session::findbyactorid ( i64_actorid aactorid)

根据Actor ID查找KCP端点。

Parameters
aactoridActor ID
Returns
找到的端点共享指针,不存在返回nullptr

◆ foreach()

void ngl::kcp_session::foreach ( const std::function< void(std::shared_ptr< kcp_endpoint > &)> & acall)

遍历所有KCP端点。

Parameters
acall回调函数,接受KCP端点共享指针引用

◆ foreachbyarea()

void ngl::kcp_session::foreachbyarea ( i16_area aarea,
const std::function< void(std::shared_ptr< kcp_endpoint > &)> & acall )

按区域遍历KCP端点。

Parameters
aarea区域ID
acall回调函数,接受KCP端点共享指针引用

◆ reset_add()

std::shared_ptr< kcp_endpoint > ngl::kcp_session::reset_add ( int32_t aconv,
const basio::ip::udp::endpoint & aendpoint,
i64_actorid aactoridserver,
i64_actorid aactoridclient )

重置并添加KCP端点(用于重连)。

Parameters
aconvKCP会话标识
aendpointUDP端点
aactoridserver服务端Actor ID
aactoridclient客户端Actor ID
Returns
重置后的KCP端点共享指针

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