2
my_com_netsplit_Nih_Test_Signal_signal (DBusConnection * connection,
4
NihDBusProxySignal *proxied)
7
NihDBusMessage *message;
9
nih_assert (connection != NULL);
10
nih_assert (signal != NULL);
11
nih_assert (proxied != NULL);
12
nih_assert (connection == proxied->proxy->connection);
14
if (! dbus_message_is_signal (signal, proxied->interface->name, proxied->signal->name))
15
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
17
if (! dbus_message_has_path (signal, proxied->proxy->path))
18
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
20
if (proxied->proxy->name)
21
if (! dbus_message_has_sender (signal, proxied->proxy->owner))
22
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
24
message = nih_dbus_message_new (NULL, connection, signal);
26
return DBUS_HANDLER_RESULT_NEED_MEMORY;
28
/* Iterate the arguments to the signal and demarshal into arguments
29
* for our own function call.
31
dbus_message_iter_init (message->message, &iter);
33
if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_INVALID) {
35
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
38
/* Call the handler function */
39
nih_error_push_context ();
40
((MySignalHandler)proxied->handler) (proxied->data, message);
41
nih_error_pop_context ();
44
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;