diff options
| author | Michael Biebl <biebl@debian.org> | 2011-04-08 07:30:59 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2011-04-08 07:30:59 +0200 |
| commit | f75dd6fd1975146623052b843b182dc32c3fbe46 (patch) | |
| tree | 05ba60b772670f038c9a1fbff940ec5d3e28d870 /libnm-glib/nm-object.c | |
| parent | c980bdf58dc973dd5617aaa6f9466f9e44fcbf58 (diff) | |
Imported Upstream version 0.8.998 upstream/0.8.998
Diffstat (limited to 'libnm-glib/nm-object.c')
| -rw-r--r-- | libnm-glib/nm-object.c | 88 |
1 files changed, 53 insertions, 35 deletions
diff --git a/libnm-glib/nm-object.c b/libnm-glib/nm-object.c index 85cb6b78..8540ccca 100644 --- a/libnm-glib/nm-object.c +++ b/libnm-glib/nm-object.c @@ -18,7 +18,7 @@ * Boston, MA 02110-1301 USA. * * Copyright (C) 2007 - 2008 Novell, Inc. - * Copyright (C) 2007 - 2008 Red Hat, Inc. + * Copyright (C) 2007 - 2011 Red Hat, Inc. */ #include <string.h> @@ -223,7 +223,7 @@ nm_object_class_init (NMObjectClass *nm_object_class) * * Gets the #NMObject's DBusGConnection. * - * Returns: the connection + * Returns: (transfer none): the connection **/ DBusGConnection * nm_object_get_connection (NMObject *object) @@ -369,12 +369,18 @@ out: g_free (prop_name); } +void +_nm_object_process_properties_changed (NMObject *self, GHashTable *properties) +{ + g_hash_table_foreach (properties, handle_property_changed, self); +} + static void properties_changed_proxy (DBusGProxy *proxy, GHashTable *properties, gpointer user_data) { - g_hash_table_foreach (properties, handle_property_changed, user_data); + _nm_object_process_properties_changed (NM_OBJECT (user_data), properties); } void @@ -480,9 +486,10 @@ done: gboolean _nm_object_get_property (NMObject *object, - const char *interface, - const char *prop_name, - GValue *value) + const char *interface, + const char *prop_name, + GValue *value, + GError **error) { GError *err = NULL; @@ -490,6 +497,7 @@ _nm_object_get_property (NMObject *object, g_return_val_if_fail (interface != NULL, FALSE); g_return_val_if_fail (prop_name != NULL, FALSE); g_return_val_if_fail (value != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); if (!dbus_g_proxy_call_with_timeout (NM_OBJECT_GET_PRIVATE (object)->properties_proxy, "Get", 15000, &err, @@ -500,8 +508,10 @@ _nm_object_get_property (NMObject *object, G_TYPE_INVALID)) { /* Don't warn about D-Bus no reply/timeout errors; it's mostly noise and * happens for example when NM quits and the applet is still running. - */ - if (!(err->domain == DBUS_GERROR && err->code == DBUS_GERROR_NO_REPLY)) { + * And don't warn when 'error' is not NULL, rather propagate 'err' so the caller + * can do something with it. */ + if ( !error + && !(err->domain == DBUS_GERROR && err->code == DBUS_GERROR_NO_REPLY)) { g_warning ("%s: Error getting '%s' for %s: (%d) %s\n", __func__, prop_name, @@ -509,7 +519,7 @@ _nm_object_get_property (NMObject *object, err->code, err->message); } - g_error_free (err); + g_propagate_error (error, err); return FALSE; } @@ -542,13 +552,14 @@ _nm_object_set_property (NMObject *object, char * _nm_object_get_string_property (NMObject *object, - const char *interface, - const char *prop_name) + const char *interface, + const char *prop_name, + GError **error) { char *str = NULL; GValue value = {0,}; - if (_nm_object_get_property (object, interface, prop_name, &value)) { + if (_nm_object_get_property (object, interface, prop_name, &value, error)) { if (G_VALUE_HOLDS_STRING (&value)) str = g_strdup (g_value_get_string (&value)); else if (G_VALUE_HOLDS (&value, DBUS_TYPE_G_OBJECT_PATH)) @@ -561,13 +572,14 @@ _nm_object_get_string_property (NMObject *object, char * _nm_object_get_object_path_property (NMObject *object, - const char *interface, - const char *prop_name) + const char *interface, + const char *prop_name, + GError **error) { char *path = NULL; GValue value = {0,}; - if (_nm_object_get_property (object, interface, prop_name, &value)) { + if (_nm_object_get_property (object, interface, prop_name, &value, error)) { path = g_strdup (g_value_get_boxed (&value)); g_value_unset (&value); } @@ -577,13 +589,14 @@ _nm_object_get_object_path_property (NMObject *object, gint32 _nm_object_get_int_property (NMObject *object, - const char *interface, - const char *prop_name) + const char *interface, + const char *prop_name, + GError **error) { gint32 i = 0; GValue value = {0,}; - if (_nm_object_get_property (object, interface, prop_name, &value)) { + if (_nm_object_get_property (object, interface, prop_name, &value, error)) { i = g_value_get_int (&value); g_value_unset (&value); } @@ -593,13 +606,14 @@ _nm_object_get_int_property (NMObject *object, guint32 _nm_object_get_uint_property (NMObject *object, - const char *interface, - const char *prop_name) + const char *interface, + const char *prop_name, + GError **error) { guint32 i = 0; GValue value = {0,}; - if (_nm_object_get_property (object, interface, prop_name, &value)) { + if (_nm_object_get_property (object, interface, prop_name, &value, error)) { i = g_value_get_uint (&value); g_value_unset (&value); } @@ -609,13 +623,14 @@ _nm_object_get_uint_property (NMObject *object, gboolean _nm_object_get_boolean_property (NMObject *object, - const char *interface, - const char *prop_name) + const char *interface, + const char *prop_name, + GError **error) { - gboolean b = FALSE; // FIXME: somehow convey failure if needed + gboolean b = FALSE; GValue value = {0,}; - if (_nm_object_get_property (object, interface, prop_name, &value)) { + if (_nm_object_get_property (object, interface, prop_name, &value, error)) { b = g_value_get_boolean (&value); g_value_unset (&value); } @@ -625,13 +640,14 @@ _nm_object_get_boolean_property (NMObject *object, gint8 _nm_object_get_byte_property (NMObject *object, - const char *interface, - const char *prop_name) + const char *interface, + const char *prop_name, + GError **error) { gint8 b = G_MAXINT8; GValue value = {0,}; - if (_nm_object_get_property (object, interface, prop_name, &value)) { + if (_nm_object_get_property (object, interface, prop_name, &value, error)) { b = g_value_get_uchar (&value); g_value_unset (&value); } @@ -641,13 +657,14 @@ _nm_object_get_byte_property (NMObject *object, gdouble _nm_object_get_double_property (NMObject *object, - const char *interface, - const char *prop_name) + const char *interface, + const char *prop_name, + GError **error) { gdouble d = G_MAXDOUBLE; GValue value = {0,}; - if (_nm_object_get_property (object, interface, prop_name, &value)) { + if (_nm_object_get_property (object, interface, prop_name, &value, error)) { d = g_value_get_double (&value); g_value_unset (&value); } @@ -657,13 +674,14 @@ _nm_object_get_double_property (NMObject *object, GByteArray * _nm_object_get_byte_array_property (NMObject *object, - const char *interface, - const char *prop_name) + const char *interface, + const char *prop_name, + GError **error) { - GByteArray * array = NULL; + GByteArray *array = NULL; GValue value = {0,}; - if (_nm_object_get_property (object, interface, prop_name, &value)) { + if (_nm_object_get_property (object, interface, prop_name, &value, error)) { GArray * tmp = g_value_get_boxed (&value); int i; unsigned char byte; |