2010-02-10 3 views
3

Existe-t-il un moyen de déclarer quels signaux sont souscrits par une application Python via DBus? En d'autres termes, existe-t-il un moyen de faire de la publicité via l'interface "Introspectable" à laquelle les signaux sont abonnés? J'utilise "Débogueur D-Feet D-Bus".Déclarez quels signaux sont souscrits sur DBus?

E.g. L'application s'abonne au signal X (en utilisant la méthode add_signal_receiver sur un objet bus).

Répondre

1

Ceci n'est probablement pas possible car un signal est émis sur le bus et l'application ne fait que détecter ce qui est intéressant. L'abonnement ne se passe pas à l'intérieur de dbus.

+0

Même conclusion que je suis venu. Merci. – jldupont

4

Les clients D-Bus appellent AddMatch sur le démon de bus pour enregistrer leur intérêt pour les messages correspondant à un modèle particulier; la plupart des liaisons ajoutent une règle de correspondance pour tous les signaux d'un service et d'un chemin d'objet particulier ou pour les signaux d'une interface particulière sur ce service et ce chemin d'accès aux objets lorsque vous créez un objet proxy. En utilisant dbus-monitor, vous pouvez voir les règles de correspondance ajoutées: essayez d'exécuter dbus-monitor member=AddMatch puis d'exécuter une application utilisant D-Bus. De même, vous pouvez écouter les appels au RemoveMatch. Cependant, il n'y a actuellement aucun moyen de demander au démon l'ensemble des règles de correspondance actuellement en vigueur. Ajouter un moyen de poser cette question aurait plus de sens que d'ajouter un moyen pour les clients de re-publier ceci, étant donné que le démon le sait déjà.

Questions connexes