我正在尝试编写一个导出用户的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中这样做,但我认为这个问题是语言无关的
答案 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标准化了这样的事情。)