mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-29 13:50:13 +01:00
libnm: reorganize demarshal_generic(), make unrecognized type a warning
Redo the HANDLE_TYPE macro in demarshal_generic() in a more syntactically-sane way (both to help the editor with indentation and to make it not look so weird). Also, if demarshal_generic() is asked to handle a property of a type that it doesn't know how to handle, that's a programmer error, so do a g_warning() in that case (as opposed to being asked to demarshal a value of the wrong D-Bus type, which could just be a bug in the peer that sent the data, so that stays as a debug message).
This commit is contained in:
parent
5c2d2eed30
commit
ad25e5c970
1 changed files with 28 additions and 18 deletions
|
|
@ -1264,15 +1264,16 @@ property_proxy_signal (GDBusProxy *proxy,
|
|||
g_variant_unref (properties);
|
||||
}
|
||||
|
||||
#define HANDLE_TYPE(gtype, vtype, ctype, getter) \
|
||||
} else if (pspec->value_type == gtype) { \
|
||||
#define HANDLE_TYPE(vtype, ctype, getter) \
|
||||
G_STMT_START { \
|
||||
if (g_variant_is_of_type (value, vtype)) { \
|
||||
ctype *param = (ctype *) field; \
|
||||
*param = getter (value); \
|
||||
} else { \
|
||||
success = FALSE; \
|
||||
goto done; \
|
||||
}
|
||||
} \
|
||||
} G_STMT_END
|
||||
|
||||
static gboolean
|
||||
demarshal_generic (NMObject *object,
|
||||
|
|
@ -1317,21 +1318,30 @@ demarshal_generic (NMObject *object,
|
|||
*param = g_bytes_new (val, length);
|
||||
else
|
||||
*param = NULL;
|
||||
HANDLE_TYPE (G_TYPE_BOOLEAN, G_VARIANT_TYPE_BOOLEAN, gboolean, g_variant_get_boolean)
|
||||
HANDLE_TYPE (G_TYPE_UCHAR, G_VARIANT_TYPE_BYTE, guchar, g_variant_get_byte)
|
||||
HANDLE_TYPE (G_TYPE_DOUBLE, G_VARIANT_TYPE_DOUBLE, gdouble, g_variant_get_double)
|
||||
HANDLE_TYPE (G_TYPE_INT, G_VARIANT_TYPE_INT32, gint, g_variant_get_int32)
|
||||
HANDLE_TYPE (G_TYPE_UINT, G_VARIANT_TYPE_UINT32, guint, g_variant_get_uint32)
|
||||
HANDLE_TYPE (G_TYPE_INT64, G_VARIANT_TYPE_INT64, gint, g_variant_get_int64)
|
||||
HANDLE_TYPE (G_TYPE_UINT64, G_VARIANT_TYPE_UINT64, guint, g_variant_get_uint64)
|
||||
HANDLE_TYPE (G_TYPE_LONG, G_VARIANT_TYPE_INT64, glong, g_variant_get_int64)
|
||||
HANDLE_TYPE (G_TYPE_ULONG, G_VARIANT_TYPE_UINT64, gulong, g_variant_get_uint64)
|
||||
} else {
|
||||
dbgmsg ("%s: %s:%s unhandled type %s.",
|
||||
__func__,
|
||||
G_OBJECT_TYPE_NAME (object),
|
||||
pspec->name,
|
||||
g_type_name (pspec->value_type));
|
||||
} else if (pspec->value_type == G_TYPE_BOOLEAN)
|
||||
HANDLE_TYPE (G_VARIANT_TYPE_BOOLEAN, gboolean, g_variant_get_boolean);
|
||||
else if (pspec->value_type == G_TYPE_UCHAR)
|
||||
HANDLE_TYPE (G_VARIANT_TYPE_BYTE, guchar, g_variant_get_byte);
|
||||
else if (pspec->value_type == G_TYPE_DOUBLE)
|
||||
HANDLE_TYPE (G_VARIANT_TYPE_DOUBLE, gdouble, g_variant_get_double);
|
||||
else if (pspec->value_type == G_TYPE_INT)
|
||||
HANDLE_TYPE (G_VARIANT_TYPE_INT32, gint, g_variant_get_int32);
|
||||
else if (pspec->value_type == G_TYPE_UINT)
|
||||
HANDLE_TYPE (G_VARIANT_TYPE_UINT32, guint, g_variant_get_uint32);
|
||||
else if (pspec->value_type == G_TYPE_INT64)
|
||||
HANDLE_TYPE (G_VARIANT_TYPE_INT64, gint, g_variant_get_int64);
|
||||
else if (pspec->value_type == G_TYPE_UINT64)
|
||||
HANDLE_TYPE (G_VARIANT_TYPE_UINT64, guint, g_variant_get_uint64);
|
||||
else if (pspec->value_type == G_TYPE_LONG)
|
||||
HANDLE_TYPE (G_VARIANT_TYPE_INT64, glong, g_variant_get_int64);
|
||||
else if (pspec->value_type == G_TYPE_ULONG)
|
||||
HANDLE_TYPE (G_VARIANT_TYPE_UINT64, gulong, g_variant_get_uint64);
|
||||
else {
|
||||
g_warning ("%s: %s:%s unhandled type %s.",
|
||||
__func__,
|
||||
G_OBJECT_TYPE_NAME (object),
|
||||
pspec->name,
|
||||
g_type_name (pspec->value_type));
|
||||
success = FALSE;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue