#packet #protocols #deserialize #serialization #transport-layer #networking

drax

协议缓冲区之上的简单抽象层,将DTOs转换为常规类型

2个版本

新版本 0.1.1 2024年8月14日
0.1.0 2024年8月14日

#1170 in 解析器实现

Download history 199/week @ 2024-08-10

199 每月下载量

自定义许可证

72KB
1.5K SLoC

Drax

字节和已处理帧之间的无形传输层。

示例

请参阅示例目录,了解如何使用项目。

要执行示例,您可以运行 cargo run -p <example>just example <example>

未来计划

  • 添加派生宏来自动派生 PacketComponent 特性。
  • 在 README.md 中添加创建自定义数据包的文档。
  • 在 README.md 中添加派生文档。
  • 构建关于上下文构建和使用数据包的上下文的文档。

数据包分帧

Drax 中的数据包分帧不是传统的。数据包不是按大小读取到缓冲区中,而是直接读取到需要构建的类型中。这允许系统更加高效和灵活。

当您发送数据包时,实际上是在发送数据帧的“结构体”或“枚举”。由于 Rust 的类型系统提供了类型分帧系统,因此从它迁移是有意义的。

加密和压缩

Drax 目前不支持加密和压缩。

这是一个计划中的功能,将添加基本的压缩和加密支持。

当启用压缩时,分帧将需要单独的阶段和头文件来确定压缩数据的大小。

加密不需要单独的分帧,这意味着压缩将在解码过程中增加大量的工作。

定义协议

定义协议是构建服务器/客户端对的第一步。包括某种心跳系统,应该有一个在协议不同阶段预期发送和接收的数据包列表。

定义协议最常见的方法是使用枚举,其中每个变体代表一个单独的数据包。数据包的编码和解码应该非常简单,任何额外的手动逻辑都应该写入单独的结构体并引用枚举。

依赖关系

~2.7–4.5MB
~78K SLoC