signal_subscribe
Description:
Subscribes to signals on this and invokes callback
whenever the signal is received.
Note that callback
will be invoked in the thread-default main context of the thread you are calling this method from.
If this is not a message bus connection, sender
must be null.
If sender
is a well-known name note that callback
is invoked with the unique name for the owner of sender
, not the well-known name as one would expect. This is because the message bus rewrites the name. As such, to avoid certain race
conditions, users should be tracking the name owner of the well-known name and use that when processing the received signal.
If one of g_dbus_signal_flags_match_arg0_namespace or
g_dbus_signal_flags_match_arg0_path are given, arg0
is interpreted as part of a namespace or path. The first argument of a
signal is matched against that part as specified by D-Bus.
If user_data_free_func
is non-null, it will be called (in the thread-default main context of the
thread you are calling this method from) at some point after user_data
is no longer needed. (It is not guaranteed to be called
synchronously when the signal is unsubscribed from, and may be called after this has been destroyed.)
As callback
is potentially invoked in a different thread from where it’s emitted, it’s possible for this to happen after
signal_unsubscribe has been called in another thread. Due to
this, user_data
should have a strong reference which is freed with user_data_free_func
, rather than pointing to data
whose lifecycle is tied to the signal subscription. For example, if a Object is used
to store the subscription ID from signal_subscribe, a strong reference to that
Object must be passed to user_data
, and
unref passed to user_data_free_func
. You are responsible for
breaking the resulting reference count cycle by explicitly unsubscribing from the signal when dropping the last external reference to the
Object. Alternatively, a weak reference may be used.
It is guaranteed that if you unsubscribe from a signal using
signal_unsubscribe from the same thread which made the corresponding signal_subscribe call, callback
will not be invoked after signal_unsubscribe returns.
The returned subscription identifier is an opaque value which is guaranteed to never be zero.
This function can never fail.
Parameters:
this | |
sender |
sender name to match on (unique or well-known name) or null to listen from all senders |
interface_name |
D-Bus interface name to match on or null to match on all interfaces |
member |
D-Bus signal name to match on or null to match on all signals |
object_path |
object path to match on or null to match on all object paths |
arg0 |
contents of first string argument to match on or null to match on all kinds of arguments |
flags |
DBusSignalFlags describing how arg0 is used in subscribing to the signal |
callback |
callback to invoke when there is a signal matching the requested data |
user_data |
user data to pass to |
user_data_free_func |
function to free |
Returns:
a subscription identifier that can be used with signal_unsubscribe |