#dbus #zbus #ipc #type-safety #api-bindings

zbus-lockstep-macros

宏,以保持类型与DBus XML定义同步

11个版本

0.4.4 2024年3月18日
0.4.3 2024年3月18日
0.4.0 2024年2月19日
0.3.1 2023年10月2日
0.2.0 2023年8月31日

#1106过程宏

Download history 312/week @ 2024-03-13 62/week @ 2024-03-20 11/week @ 2024-03-27 22/week @ 2024-04-03 30/week @ 2024-04-10 95/week @ 2024-04-17 41/week @ 2024-04-24 177/week @ 2024-05-01 2/week @ 2024-05-08 29/week @ 2024-05-15 134/week @ 2024-05-22 43/week @ 2024-05-29 67/week @ 2024-06-05 140/week @ 2024-06-12 160/week @ 2024-06-19 248/week @ 2024-06-26

每月下载量620
4 个包中使用 (通过 atspi-common)

MIT 许可证

66KB
894

zbus-lockstep-macros

CI Maintenance crates-io api-docs

zbus-lockstep-macros 扩展 zbus-lockstep 以更方便和简洁的方式将信号类型的签名与DBus XML文件中的相应签名匹配。

动机

在通过DBus进行IPC的情况下,尤其是在有多个服务器和/或客户端实现的情况下,每个实现都需要发送其他人期望的内容,并且期望与通过总线发送的内容相符。

XML协议描述可以作为所有实现者的共享参考框架或“所有真理的单一来源”。有一个单一的参考点有助于所有实现者满足协议符合性的期望。

保持您通过DBus发送的类型与当前有效的协议描述同步将减少误解或通信失败的机会。

使用

zbus-lockstep-macros 添加到 Cargo.toml 的依赖项中

[dependencies]
zbus-lockstep-macros = "0.4.4"

如果DBus XML描述可以在crates根目录中找到,无论是 xml/ 还是 XML/,验证类型可以像这样简单

 use zbus_lockstep_macros::validate;
 use zvariant::Type;

 #[validate]
 #[derive(Type)]
 struct BirthdayEvent {
    name: String,
    new_age: u8,
}

请注意,该宏假定成员名称包含在结构名称中。如果您正在使用其他命名方案,您可以提供成员名称。

此外,如果DBus描述中多个接口提供了具有相同名称的信号,则可能需要消除歧义。

任何参数都是可选的。

#[验证(xml: <xml_path>,interface: <interface_name>,member: <member_name>)]

请参阅crates 文档以获取更多关于参数的详细描述。

许可证

MIT

依赖项

~4.5MB
~83K SLoC