2个版本
0.5.1 | 2024年4月24日 |
---|---|
0.5.0 | 2021年11月4日 |
#485 in 编码
2,976 monthly downloads
在 4 个crate中使用 (2 直接使用)
7KB
88 代码行
此crate定义了 CdrEncodingSize
trait。它是RustDDS库的辅助工具。
因为该trait有一个 derive宏,且(Rust编程语言,第19.5节“宏”)https://doc.rust-lang.net.cn/book/ch19-06-macros.html 建议说,“在撰写本文时,过程宏需要在自己的crate中。最终,这个限制可能会被取消。”
RTPS规范版本2.5第“9.6.4.8 KeyHash (PID_KEY_HASH)”部分定义了一个计算数据样本DDS Key的16字节哈希算法。
算法摘要
- 定义一个与数据样本类型对应的“holder”类型。
- holder类型由构成数据样本类型Key的所有字段组成。
- holder类型按照PLAIN_CDR2大端规则进行序列化。
- 如果holder类型的最大序列化大小不超过16字节,则上一步产生的序列化表示,通过填充零字节使其正好为16字节,即为“key hash”。
- 如果holder类型的最大序列化大小超过16字节,则计算上述序列化表示的MD5哈希值,这将是“key hash”。
- 这将始终产生一个正好为16字节的“key hash”。
此trait是一个自动机制,用于确定是否超出16字节限制,即是否应使用MD5哈希。
待办事项
- derive宏支持基本类型和
struct
,但不支持enum
类型。如果Key类型是,或包含一个enum
,它将失败。
依赖项
~1.5MB
~35K SLoC