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

KCP端点结构体。 More...

#include <kcp_endpoint.h>

Inheritance diagram for ngl::kcp_endpoint:

Public Types

typedef int(* output) (const char *buf, int len, struct IKCPCB *kcp, void *user)
 KCP输出回调函数类型。

Public Member Functions

 ~kcp_endpoint ()
 析构函数,释放KCP控制块。
void create (int32_t aconv, uint32_t asessionid, void *auser)
 创建KCP控制块。
void removetimer ()
 移除KCP更新定时器。
int setmtu (int mtu)
 设置KCP最大传输单元(MTU)。
void setoutput (output afun)
 设置KCP输出回调函数。
int nodelay (int nodelay, int interval, int resend, int nc)
 设置KCP nodelay模式。
int wndsize (int sndwnd, int rcvwnd)
 设置KCP发送和接收窗口大小。
void update (uint32_t current)
 更新KCP状态。
int input (const char *data, long size)
 向KCP输入数据。
int recv (char *buffer, int len)
 从KCP接收数据。
int peeksize () const
int send (const char *buffer, int len)
 通过KCP发送数据。
void flush ()
 强制刷新KCP发送缓冲区。
void release ()
 释放KCP控制块。

Static Public Member Functions

static std::string ip (kcp_endpoint *ap)
 获取端点的IP地址字符串。
static i16_port port (kcp_endpoint *ap)
 获取端点的端口号。

Public Attributes

basio::ip::udp::endpoint m_endpoint
 远端UDP端点
i32_sessionid m_session = 0
 本地合成会话ID
std::string m_ip
 缓存的远端IP字符串
i16_port m_port = 0
 缓存的远端端口
asio_kcpm_asiokcp = nullptr
 所属的asio_kcp传输
ikcpcb * m_kcp = nullptr
 Underlying KCP control block.
std::mutex m_kcpmutex
 Protects ikcpcb; KCP is not thread-safe.
bool m_isconnect = false
 True after logical KCP handshake.
i64_actorid m_client = 0
 逻辑客户端actor ID
i64_actorid m_server = 0
 逻辑服务端actor ID
int64_t m_timerid = 0
 周期性ikcp_update定时器ID
npack_list m_npacklist
 待发送数据包队列

Detailed Description

KCP端点结构体。

表示一个KCP连接端点,封装了KCP控制块和远端UDP端点信息。 主要功能包括:

  • 管理KCP控制块的生命周期
  • 提供KCP协议的薄封装API
  • 维护会话ID和Actor ID映射
  • 支持KCP握手和连接状态管理
  • 管理异步发送队列
Note
继承自std::enable_shared_from_this,支持安全的shared_ptr传递。
使用npack_list管理待发送的数据包队列。

Member Typedef Documentation

◆ output

typedef int(* ngl::kcp_endpoint::output) (const char *buf, int len, struct IKCPCB *kcp, void *user)

KCP输出回调函数类型。

Parameters
buf数据缓冲区
len数据长度
kcpKCP控制块
user用户数据指针
Returns
成功返回0,失败返回非0

Member Function Documentation

◆ create()

void ngl::kcp_endpoint::create ( int32_t aconv,
uint32_t asessionid,
void * auser )

创建KCP控制块。

Parameters
aconvKCP会话标识
asessionid会话ID
auser用户数据指针

◆ input()

int ngl::kcp_endpoint::input ( const char * data,
long size )

向KCP输入数据。

Parameters
data数据缓冲区
size数据长度
Returns
成功返回0,失败返回非0

◆ ip()

std::string ngl::kcp_endpoint::ip ( kcp_endpoint * ap)
static

获取端点的IP地址字符串。

Parameters
apKCP端点指针
Returns
IP地址字符串

◆ nodelay()

int ngl::kcp_endpoint::nodelay ( int nodelay,
int interval,
int resend,
int nc )

设置KCP nodelay模式。

Parameters
nodelay是否启用nodelay
interval内部刷新间隔
resend快速重传触发次数
nc是否关闭流控
Returns
成功返回0,失败返回非0

◆ port()

i16_port ngl::kcp_endpoint::port ( kcp_endpoint * ap)
static

获取端点的端口号。

Parameters
apKCP端点指针
Returns
端口号

◆ recv()

int ngl::kcp_endpoint::recv ( char * buffer,
int len )

从KCP接收数据。

Parameters
buffer接收缓冲区
len缓冲区长度
Returns
接收到的数据长度,失败返回负值

◆ send()

int ngl::kcp_endpoint::send ( const char * buffer,
int len )

通过KCP发送数据。

Parameters
buffer数据缓冲区
len数据长度
Returns
成功返回0,失败返回非0

◆ setmtu()

int ngl::kcp_endpoint::setmtu ( int mtu)

设置KCP最大传输单元(MTU)。

Parameters
mtuMTU值
Returns
成功返回0,失败返回非0

◆ setoutput()

void ngl::kcp_endpoint::setoutput ( output afun)

设置KCP输出回调函数。

Parameters
afun输出回调函数

◆ update()

void ngl::kcp_endpoint::update ( uint32_t current)

更新KCP状态。

Parameters
current当前时间(毫秒)

◆ wndsize()

int ngl::kcp_endpoint::wndsize ( int sndwnd,
int rcvwnd )

设置KCP发送和接收窗口大小。

Parameters
sndwnd发送窗口大小
rcvwnd接收窗口大小
Returns
成功返回0,失败返回非0

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