DBus对象的子节点

时间:2011-03-11 01:31:49

标签: python dbus

我正在尝试编写一个导出用户的dbus对象,并在/ path / to / users中创建了我的对象。此对象具有“用户添加”,“用户删除”等信号。

然后,我希望为/ a / b / c用户a,b和c提供对/ path / to / users / [a,b,c]中每个用户的访问权限,这将为每个用户提供一些方法。

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

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

感谢。

NB。我在python中这样做,但我认为这个问题是语言无关的

1 个答案:

答案 0 :(得分:1)

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标准化了这样的事情。)