gdbus: Add g_dbus_get_properties function
authorJohan Hedberg <johan.hedberg@intel.com>
Fri, 12 Oct 2012 08:55:37 +0000 (10:55 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Mon, 26 Nov 2012 13:44:48 +0000 (14:44 +0100)
This function can be used to construct custom D-Bus messages containing
the properties for a specific interface on a given path.

gdbus/gdbus.h
gdbus/object.c

index a96c97f..8251947 100644 (file)
@@ -257,6 +257,8 @@ void g_dbus_pending_property_error(DBusConnection *connection,
 void g_dbus_emit_property_changed(DBusConnection *connection,
                                const char *path, const char *interface,
                                const char *name);
+gboolean g_dbus_get_properties(DBusConnection *connection, const char *path,
+                               const char *interface, DBusMessageIter *iter);
 
 #ifdef __cplusplus
 }
index 7acb563..aa38c07 100644 (file)
@@ -1615,3 +1615,22 @@ void g_dbus_emit_property_changed(DBusConnection *connection,
                return;
        }
 }
+
+gboolean g_dbus_get_properties(DBusConnection *connection, const char *path,
+                               const char *interface, DBusMessageIter *iter)
+{
+       struct generic_data *data;
+       struct interface_data *iface;
+
+       if (!dbus_connection_get_object_path_data(connection, path,
+                                       (void **) &data) || data == NULL)
+               return FALSE;
+
+       iface = find_interface(data->interfaces, interface);
+       if (iface == NULL)
+               return FALSE;
+
+       append_properties(iface, iter);
+
+       return TRUE;
+}