2010-02-10 93 views
3

有没有办法通过DBus声明哪些信号由Python应用程序订阅?声明哪些信号在DBus上订阅?

换句话说,有一种方法,通过该信号被订阅的“内省”接口做广告。我使用“D-Feet D-Bus调试器”。

E.g.应用程序订阅信号X(在bus对象上使用add_signal_receiver方法)。

回答

1

因为发出信号总线上和应用程序只是挑选出什么有趣的是这可能是不可能的。订阅不会发生在dbus内部。

+0

我得出同样的结论。谢谢。 – jldupont 2010-03-02 18:34:30

4

d-Bus的客户打电话AddMatch总线上的守护进程注册它们匹配特定模式的消息感兴趣;当您创建代理对象时,大多数绑定会为特定服务和对象路径上的所有信号或该服务和对象路径上特定接口上的信号添加匹配规则。

使用dbus的显示器就可以看到添加的比赛规则:尝试运行dbus-monitor member=AddMatch,然后运行使用d-Bus的应用程序。同样,您可以窃听RemoveMatch的呼叫。但是,目前无法向守护进程询问当前有效的一组匹配规则。考虑到守护进程已经知道,添加一种方法来问这个问题会比为客户重新宣传这个方法更有意义。