Объявите, какие сигналы подписаны на DBus? - PullRequest
3 голосов
/ 11 февраля 2010

Есть ли способ объявить, какие сигналы подписаны приложением Python через DBus?

Другими словами, есть ли способ рекламы через интерфейс «Introspectable», на который подписаны сигналы. Я использую «D-Feet D-Bus отладчик».

например. Приложение подписывается на сигнал X (используя метод add_signal_receiver для объекта bus).

Ответы [ 2 ]

4 голосов
/ 05 марта 2010

клиенты D-Bus вызывают AddMatch на демоне шины, чтобы зарегистрировать свою заинтересованность в сообщениях, соответствующих определенному шаблону; большинство привязок добавляют правило соответствия либо для всех сигналов в конкретной службе и пути к объекту, либо для сигналов в конкретном интерфейсе в этой службе и пути к объектам при создании объекта-посредника.

Используя dbus-monitor, вы можете видеть добавленные правила совпадений: попробуйте запустить dbus-monitor member=AddMatch, а затем запустить приложение, которое использует D-Bus. Точно так же вы можете прослушивать звонки на RemoveMatch. Однако в настоящее время нет способа запросить у демона набор действующих правил соответствия. Добавление способа задать этот вопрос имеет больше смысла, чем добавление способа повторной рекламы для клиентов, учитывая, что демон уже знает.

1 голос
/ 02 марта 2010

Это, вероятно, невозможно, поскольку на шину подается сигнал, а приложение просто выбирает то, что интересно. Подписка не происходит внутри dbus.

...