static void do_send_deprecated_prop_changed_signal( DBusConnection *con, const char *path, const char *interface, const struct wpa_dbus_object_desc *obj_dsc) { DBusMessage *msg; DBusMessageIter signal_iter, dict_iter; msg = dbus_message_new_signal(path, interface, "PropertiesChanged"); if (msg == NULL) return; dbus_message_iter_init_append(msg, &signal_iter); if (!dbus_message_iter_open_container(&signal_iter, DBUS_TYPE_ARRAY, "{sv}", &dict_iter)) goto err; if (!put_changed_properties(obj_dsc, interface, &dict_iter, 1)) goto err; if (!dbus_message_iter_close_container(&signal_iter, &dict_iter)) goto err; dbus_connection_send(con, msg, NULL); out: dbus_message_unref(msg); return; err: wpa_printf(MSG_DEBUG, "dbus: %s: Failed to construct signal", __func__); goto out; }
static void do_send_prop_changed_signal( DBusConnection *con, const char *path, const char *interface, const struct wpa_dbus_object_desc *obj_dsc) { DBusMessage *msg; DBusMessageIter signal_iter, dict_iter; msg = dbus_message_new_signal(path, DBUS_INTERFACE_PROPERTIES, "PropertiesChanged"); if (msg == NULL) return; dbus_message_iter_init_append(msg, &signal_iter); if (!dbus_message_iter_append_basic(&signal_iter, DBUS_TYPE_STRING, &interface) || /* Changed properties dict */ !dbus_message_iter_open_container(&signal_iter, DBUS_TYPE_ARRAY, "{sv}", &dict_iter) || !put_changed_properties(obj_dsc, interface, &dict_iter, 0) || !dbus_message_iter_close_container(&signal_iter, &dict_iter) || /* Invalidated properties array (empty) */ !dbus_message_iter_open_container(&signal_iter, DBUS_TYPE_ARRAY, "s", &dict_iter) || !dbus_message_iter_close_container(&signal_iter, &dict_iter)) { wpa_printf(MSG_DEBUG, "dbus: %s: Failed to construct signal", __func__); } else { dbus_connection_send(con, msg, NULL); } dbus_message_unref(msg); }