Support a destination keyword for signals
Add a new keyword to the signal decorator to allow specifying the destination for a signal (rather than the default NULL). This allows for signals to be recieved by callers that specify GLib's DBUS_SIGNAL_FLAGS_NO_MATCH_RULE, used by libportal for example.
Usage of the keyword:
@dbus.service.signal("org.example.Sample", signature="a",
destination_keyword="dest")
def SomeSignal(self, value):
pass
And the invocation to send to a specific destination:
myobj.SomeSignal(1, dest=":1.23")
The example part doesn't need to be merged, that was more for testing the signal and showing how it can be used. dbus-monitor sees these as:
signal time=1653614956.679658 sender=:1.1702 -> destination=org.freedesktop.DBus serial=3 path=/SomeObject; interface=com.example.SampleInterface; member=PingSignal
uint32 1
signal time=1653614957.680001 sender=:1.1702 -> destination=(null destination) serial=4 path=/SomeObject; interface=com.example.SampleInterface; member=PingSignal
uint32 2