2个版本
新版本 0.1.1 | 2024年8月14日 |
---|---|
0.1.0 | 2024年8月14日 |
#1170 in 解析器实现
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