|
ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
|
网络数据包结构体。 More...
#include <pack.h>
Public Member Functions | |
| pack ()=default | |
| 默认构造函数 | |
| pack (const pack &)=delete | |
| pack & | operator= (const pack &)=delete |
| void | free () |
| 释放数据包资源。 | |
| ~pack () | |
| 析构函数 | |
| void | set (bpool &apool) |
| 设置缓冲池。 | |
| void | reset () |
| 重置数据包状态。 | |
| bool | isready () |
| 检查数据包是否就绪。 | |
| bool | malloc (int32_t alen) |
| 分配消息体内存。 | |
| void | set_actor (i64_actorid aactor, i64_actorid arequestactorid) |
| 设置Actor ID。 | |
Static Public Member Functions | |
| static std::shared_ptr< pack > | make_pack (bpool *apool, int32_t alen) |
| 创建数据包。 | |
Public Attributes | |
| ENET_PROTOCOL | m_protocol = ENET_TCP |
| 网络协议类型 | |
| i32_session | m_id = 0 |
| 会话ID | |
| std::shared_ptr< pack_head > | m_head = pack_head::make_pooled() |
| 消息头共享指针 | |
| bpool * | m_bpool = nullptr |
| 缓冲池指针 | |
| bool | m_rate_accounted = false |
| 是否已计入接收速率限制 | |
| std::vector< char > | m_auto |
| 自动管理的缓冲区 | |
| char * | m_buff = nullptr |
| 消息体缓冲区指针 | |
| int32_t | m_len = 0 |
| 消息体长度 | |
| int32_t | m_pos = 0 |
| 当前读写位置 | |
网络数据包结构体。
表示一个完整的网络数据包,包含:
支持从共享缓冲池分配内存,提高内存使用效率。
| ngl::pack::~pack | ( | ) |
析构函数
析构函数。
释放数据包占用的所有资源。 使用Try-Catch宏处理可能的异常,确保资源释放的安全性。
| void ngl::pack::free | ( | ) |
释放数据包资源。
释放数据包占用的所有资源,包括:
| bool ngl::pack::isready | ( | ) |
检查数据包是否就绪。
当头部中声明的消息体大小已完全接收时,pack变为就绪状态。
当头部中声明的消息体大小已完全接收时,pack变为就绪状态。 检查条件:头部已成功解析且当前接收位置 >= 消息体大小。
创建数据包。
创建空的pack或从共享池中分配预设大小的消息体缓冲区。
| apool | 缓冲池指针,如果为nullptr则创建空数据包 |
| alen | 消息体大小,如果为0则创建空数据包 |
创建一个新的数据包实例,并可选地分配消息体内存。 支持两种创建方式:
| apool | 缓冲池指针,如果为nullptr则使用备用分配方式 |
| alen | 消息体大小(字节),如果为0则创建空数据包 |
| bool ngl::pack::malloc | ( | int32_t | alen | ) |
分配消息体内存。
| alen | 要分配的内存大小(字节) |
为数据包分配指定大小的消息体内存。支持两种分配方式:
| alen | 要分配的内存大小(字节) |
| void ngl::pack::reset | ( | ) |
重置数据包状态。
释放数据包占用的所有资源,并将所有状态重置为初始值。 包括释放消息体内存、重置协议类型、会话ID、位置信息等。
| void ngl::pack::set | ( | bpool & | apool | ) |
设置缓冲池。
| apool | 缓冲池引用 |
将数据包与指定的缓冲池关联,以便后续的内存分配使用该缓冲池。
| apool | 缓冲池引用 |
| void ngl::pack::set_actor | ( | i64_actorid | aactor, |
| i64_actorid | arequestactorid ) |
设置Actor ID。
| aactor | 发送方Actor ID |
| arequestactorid | 请求方Actor ID |
设置数据包的发送方和请求方Actor ID。 这些ID用于在Actor系统中标识数据包的来源和目标。
| aactor | 发送方Actor ID |
| arequestactorid | 请求方Actor ID |