DBus を介して Python アプリケーションがサブスクライブするシグナルを宣言する方法はありますか?
言い換えれば、シグナルがサブスクライブされている「Introspectable」インターフェースを介してアドバタイズする方法はありますか。「D-Feet D-Busデバッガー」を使用しています。
たとえば、アプリケーションはシグナル X をサブスクライブします (オブジェクトのadd_signal_receiver
メソッドを使用)。bus
D-Bus クライアントはバス デーモンを呼び出しAddMatch
て、特定のパターンに一致するメッセージへの関心を登録します。ほとんどのバインディングは、プロキシ オブジェクトを作成するときに、特定のサービスおよびオブジェクト パス上のすべてのシグナル、またはそのサービスおよびオブジェクト パス上の特定のインターフェイス上のシグナルのいずれかに一致ルールを追加します。
dbus-monitor を使用すると、一致ルールが追加されていることがわかりdbus-monitor member=AddMatch
ます。D-Bus を使用するアプリケーションを実行してから実行してみてください。同様に、 への通話を傍受できますRemoveMatch
。ただし、現在有効な一致ルールのセットをデーモンに問い合わせる方法はありません。その質問をする方法を追加することは、デーモンがすでに知っていることを考えると、クライアントがこれを再通知する方法を追加するよりも理にかなっています。
これはおそらく不可能です。なぜなら、信号はバス上に送信され、アプリケーションは興味深いものを選択するだけだからです。サブスクライブは dbus 内では行われません。