在 dbus 消息中获取实际类型的变体数据
Get actual type of variant data in dbus message
要对收到的 属性 设置消息进行一些预验证,我需要获取消息数据的类型并将其与 属性.
的类型进行比较
当我试图查看类型(使用 sd_bus_message_peek_type
)时,它 returns "v"
这是变体的签名。是否有可能获得包装在变体中的实际数据的签名?以及如何做到这一点?
变体是一个容器,因此需要进入该容器才能获得实际类型。
进入容器是用 sd_bus_message_enter_container
完成的。
进入容器后,下一个要读取的数据是变体包装值。
请注意,可以通过调用 sd_bus_message_enter_container
本身来完成预验证步骤。
type
参数是 属性 的类型,如果它与消息数据的类型不匹配,那么 sd_bus_message_enter_container
将 return -ENXIO
.
要对收到的 属性 设置消息进行一些预验证,我需要获取消息数据的类型并将其与 属性.
的类型进行比较当我试图查看类型(使用 sd_bus_message_peek_type
)时,它 returns "v"
这是变体的签名。是否有可能获得包装在变体中的实际数据的签名?以及如何做到这一点?
变体是一个容器,因此需要进入该容器才能获得实际类型。
进入容器是用 sd_bus_message_enter_container
完成的。
进入容器后,下一个要读取的数据是变体包装值。
请注意,可以通过调用 sd_bus_message_enter_container
本身来完成预验证步骤。
type
参数是 属性 的类型,如果它与消息数据的类型不匹配,那么 sd_bus_message_enter_container
将 return -ENXIO
.