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

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

我的问题是,如何“列出”路径/ path / to / users以返回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标准化为此类。)

关于python - DBus对象的子代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5268033/

10-11 20:54