问题描述
有没有办法声明Python应用程序通过DBus订阅哪些信号?
换句话说,是否有办法通过“Introspectable”接口通告哪些信号被订阅。 我使用“D-Feet D-Bus调试器”。
例如,Application订阅信号X(在bus
对象上使用add_signal_receiver
方法)。
1楼
D-Bus客户端在总线守护程序上调用AddMatch
以注册它们对匹配特定模式的消息的兴趣;
在创建代理对象时,大多数绑定都会为特定服务和对象路径上的所有信号或该服务和对象路径上特定接口上的信号添加匹配规则。
使用dbus-monitor可以看到添加的匹配规则:尝试运行dbus-monitor member=AddMatch
,然后运行使用D-Bus的应用程序。
同样,您可以窃听对RemoveMatch
调用。
但是,目前无法向守护程序询问当前有效的匹配规则集。
鉴于守护程序已经知道,添加一种方式来询问该问题比为客户端添加重新通告方法更有意义。
2楼
这可能是不可能的,因为总线上发出信号,应用程序只是挑选出有趣的信号。 订阅不会发生在dbus内部。