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

分段数据包重组器。 More...

#include <segpack.h>

Public Types

enum class  edopush { e_continue , e_break , e_error }
 推送操作的结果枚举。 More...

Public Member Functions

 segpack ()=default
 默认构造函数。
bool push (i32_socket aid, const char *ap, int alen, bool aislanip)
 推送一个接收分片。
void close (i32_socket aid)
 关闭socket连接。

Detailed Description

分段数据包重组器。

负责将TCP流中接收到的分段数据重组为完整的网络数据包。 主要功能包括:

  • 跟踪每个socket的部分接收数据包
  • 验证数据包头部和消息体的完整性
  • 处理心跳包检测
  • 实施速率限制和流量控制
  • 管理内存缓冲池
Note
每个socket可能同时有多个部分接收的数据包,通过m_data映射进行跟踪。

Member Enumeration Documentation

◆ edopush

enum class ngl::segpack::edopush
strong

推送操作的结果枚举。

定义了数据包处理过程中的三种可能结果:

  • e_continue: 继续处理下一个数据包
  • e_break: 停止处理,等待更多数据
  • e_error: 发生错误,停止处理
Enumerator
e_continue 

继续处理下一个数据包

e_break 

停止处理,等待更多数据

e_error 

发生错误,停止处理

Member Function Documentation

◆ close()

void ngl::segpack::close ( i32_socket aid)

关闭socket连接。

关闭指定socket连接的分段包处理

清理指定socket的所有相关资源,包括部分接收的数据包和速率限制信息。

Parameters
aidsocket标识符
aidsocket描述符

◆ push()

bool ngl::segpack::push ( i32_socket aid,
const char * ap,
int alen,
bool aislanip )

推送一个接收分片。

接收网络数据并进行分段重组

将接收到的TCP分片数据推送到重组器中进行处理。 仅当分片已被完全消费或安全缓存以待后续完成时返回true。

Parameters
aidsocket标识符
ap接收到的数据指针
alen数据长度(字节)
aislanip是否为局域网IP
Returns
处理成功返回true,否则返回false
Note
一个接收缓冲区可能包含多个完整数据包,会循环处理直到所有数据被消费。

循环处理接收缓冲区中的所有完整数据包。若ap和alen均为零则清除连接。

Parameters
aidsocket描述符
ap接收到的数据缓冲区指针
alen数据长度(字节)
aislanip是否为局域网IP连接
Return values
true所有数据处理完毕
false处理过程中出现错误(非法参数或数据包解析失败)

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