On Fri, May 04, 2018 at 10:38:27AM +0200, Katerina Koukiou wrote: > Converting ENUMS to str can be user friendly though > it can be problematic in matters of backward compatibility. > > In particular when some ENUM in libvirt API will introduce a > new constant, libvirt-dbus will fail with: > > size of array ‘_GStaticAssertCompileTimeAssertion_5’ is negative > > So using ints is preferable to avoid the previous issue. > > Signed-off-by: Katerina Koukiou <[email protected]> > --- > data/org.libvirt.Domain.xml | 14 ++-- > src/domain.c | 172 > ++++---------------------------------------- > tests/test_domain.py | 6 +- > 3 files changed, 25 insertions(+), 167 deletions(-)
[...]
> diff --git a/src/domain.c b/src/domain.c
> index e305fa3..40cf2f7 100644
> --- a/src/domain.c
> +++ b/src/domain.c
[...]
> @@ -137,12 +68,8 @@
> virtDBusDomainMemoryStatsToGVariant(virDomainMemoryStatPtr stats,
>
> g_variant_builder_init(&builder, G_VARIANT_TYPE("a{st}"));
>
> - for (gint i = 0; i < nr_stats; i++) {
> - const gchar *memoryStat =
> virtDBusDomainMemoryStatTypeToString(stats[i].tag);
> - if (!memoryStat)
> - continue;
> - g_variant_builder_add(&builder, "{st}", memoryStat, stats[i].val);
> - }
> + for (gint i = 0; i < nr_stats; i++)
> + g_variant_builder_add(&builder, "{ut}", stats[i].tag, stats[i].val);
MemoryStats method needs to be updated in the introspection file.
>
> return g_variant_builder_end(&builder);
> }
[...]
> @@ -1355,7 +1252,6 @@ virtDBusDomainGetJobInfo(GVariant *inArgs G_GNUC_UNUSED,
> virtDBusConnect *connect = userData;
> g_autoptr(virDomain) domain = NULL;
> g_autofree virDomainJobInfoPtr jobInfo = NULL;
> - const gchar *jobTypeStr;
>
> domain = virtDBusDomainGetVirDomain(connect, objectPath, error);
> if (!domain)
> @@ -1365,13 +1261,7 @@ virtDBusDomainGetJobInfo(GVariant *inArgs
> G_GNUC_UNUSED,
> if (virDomainGetJobInfo(domain, jobInfo) < 0)
> return virtDBusUtilSetLastVirtError(error);
>
> - jobTypeStr = virtDBusDomainJobTypeToString(jobInfo->type);
> - if (!jobTypeStr) {
> - g_set_error(error, VIRT_DBUS_ERROR, VIRT_DBUS_ERROR_LIBVIRT,
> - "Can't format virDomainJobType '%d' to string.",
> jobInfo->type);
> - return;
> - }
> - *outArgs = g_variant_new("((sttttttttttt))", jobTypeStr,
> + *outArgs = g_variant_new("((uttttttttttt))", jobInfo->type,
GetJobInfo method needs to be updated in the introspection file.
> jobInfo->timeElapsed, jobInfo->timeRemaining,
> jobInfo->dataTotal, jobInfo->dataProcessed,
> jobInfo->dataRemaining, jobInfo->memTotal,
Reviewed-by: Pavel Hrdina <[email protected]>
signature.asc
Description: PGP signature
-- libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
