我正在尝试编写一个导出用户的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/