DBus对象的孩子

问题描述:

我正在尝试编写一个导出用户并在/ path/to/users处创建了我的对象的dbus对象。此对象具有诸如'用户添加','用户删除'等信号。DBus对象的孩子

然后,我想要在/ path/to/users/[a,b,c]处为每个用户提供对用户a,b和c将为每个用户提供一些方法。

虽然我的问题是如何“列出”路径/路径/到/用户返回a,b,c?

我唯一的选择是从path.to.users.ListUsers()返回一个路径数组,还有我可以继承的标准接口,还是某种形式的自省?

谢谢。

nb。我在Python中这样做,但我认为这个问题是独立于语言的

standard D-Bus Introspectable interface提供了一种内省对象的方法; data returned by it包含一个对象列表。

大多数D-Bus绑定(包括dbus-python)在服务端为您执行Introspectable;所以你的客户应该能够调用对象Introspect方法/path/to/users来查看哪些用户对象存在。如果dbus-python为这些数据提供了一个更好的界面,我不知道如何。就我个人而言,我会实现一个ListUsers()方法,该方法返回a{oa{sv}} - 即对象路径列表以及关于这些对象的一些属性(比如,相当于在每个对象上调用Properties.GetAll("uk.co.example.MyService.User"))。

(如果您对未来感兴趣,David Zeuthan已将proposed标准化为这样。)