From: Paolo Bonzini <pbonzini@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: lcapitulino@redhat.com, imammedo@redhat.com, akong@redhat.com,
qemu-devel@nongnu.org, armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH 4/5] monitor: add object-add (QMP) and object_add (HMP) command
Date: Tue, 10 Dec 2013 19:15:05 +0100 [thread overview]
Message-ID: <52A75A29.1030204@redhat.com> (raw)
In-Reply-To: <52A756AF.7000309@redhat.com>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Il 10/12/2013 19:00, Eric Blake ha scritto:
>>> + 'data': {'qom-type': 'str', 'id': 'str', '*props': 'dict'},
>>> + 'gen': 'no' }
>
> This feels VERY open-coded. No where else in qapi-schema do we
> have 'dict' as a type
Yes, in fact the "data" field is entirely skipped by the code
generator (that's 'gen':'no').
> ; using it violates all sorts of type-safety (which, I guess, is
> the point), making it impossible to introspect what keys are valid
> for use in the "props":{...} dictionary. Do we really want to
> play this fast and loose with the type system, or should we try
> harder to make this a robust self-describing union of types?
>
> That is, why can't we have object-add use a discriminated union,
> where qom-type is the discriminator, and where props is an
> appropriate JSON struct type that corresponds to the branch of the
> union, so that we get full introspection on the set of valid keys
> to put in props for any given qom-type?
The point of "props" is passing arbitrary data to a QOM object. We
should indeed have introspection for QOM objects, where each QOM class
name can be introspected separately. However, the union of all
possible QOM objects need not have a "C struct" representation.
Thanks for your review!
Paolo
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
iQIcBAEBAgAGBQJSp1opAAoJEBvWZb6bTYbyTBoP/RJVnEPZB/JyPH3ybHWpPdAs
3Khn04tSLTsgjmoLBdNwnIDgLQeS2nJYoASVrhIBDhA+heKWgeMH/NGvjB4t8Sug
szVUEmzyeLPEeOydyBX4AfG4yFK39ds3iVjZbJlqQ6Jw50KznIX7mJdgcPiL9ZgQ
PJjvFZ1HGqpNXYMhOPIPgkVEOuN7Z1I9Rf+gyyT2zggn+2Kmo7qs3t5sM1HHbA96
3dPV0PLwieDbqok5RpPFgHAQvrlueMiDEb9yBibfqQ/7blTvJ7tZOpaoXw+9ZddA
zOhBnl9O8vnSM7H+uGVulBtwAXJ4HzSeBIlJ03F5Jln57fmRvfqmhB2ewYlx1pJ3
oYmlyOnLhtVYRqWzry4DrqmewpB19BbHsEbo/9OsCSkfwCLeYQss0S5yeKZlm3GG
LO7zI1iUYulUJJAWbJjoO1MklVNLG9NFYhQkSD4x7mRA9UoYFcGPqK8A5m8XVSkE
APV9di6igTGDA9XvYVxYHZhXgnJ2RzdDXjLJU/gh59INzxaaJaAHM/ye4q0YjAN3
ywzmTnEdfPn4ZsTpnPUMhBIQs2bGMjq2mYoHOMVlkwvuyA8yFsOlFz4fAql/RjJQ
fwJCmJdxgxeRXyqkHOF4szUtTKJI6Pn80vxrMvVTNlPv2vw+AJmMW7LtUVXCbQlg
E/3heznvclCSoKNjrbuo
=BRjp
-----END PGP SIGNATURE-----
next prev parent reply other threads:[~2013-12-10 18:15 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-10 17:00 [Qemu-devel] [PATCH 0/5] Monitor commands for object-add/del Paolo Bonzini
2013-12-10 17:00 ` [Qemu-devel] [PATCH 1/5] rng: initialize file descriptor to -1 Paolo Bonzini
2013-12-11 23:14 ` Eric Blake
2013-12-10 17:00 ` [Qemu-devel] [PATCH 2/5] qom: fix leak for objects created with -object Paolo Bonzini
2013-12-11 23:15 ` Eric Blake
2013-12-10 17:00 ` [Qemu-devel] [PATCH 3/5] qom: catch errors in object_property_add_child Paolo Bonzini
2013-12-11 23:16 ` Eric Blake
2013-12-10 17:00 ` [Qemu-devel] [PATCH 4/5] monitor: add object-add (QMP) and object_add (HMP) command Paolo Bonzini
2013-12-10 18:00 ` Eric Blake
2013-12-10 18:15 ` Paolo Bonzini [this message]
2013-12-13 2:55 ` Wenchao Xia
2013-12-13 12:19 ` Paolo Bonzini
2013-12-16 20:02 ` Luiz Capitulino
2013-12-17 7:20 ` Markus Armbruster
2013-12-19 21:53 ` Michael Roth
2014-01-07 12:00 ` Markus Armbruster
2014-01-07 12:51 ` Paolo Bonzini
2013-12-10 17:00 ` [Qemu-devel] [PATCH 5/5] monitor: add object-del (QMP) and object_del " Paolo Bonzini
2013-12-10 18:01 ` Eric Blake
2013-12-10 18:17 ` Paolo Bonzini
2013-12-12 15:43 ` [Qemu-devel] [PATCH 0/5] Monitor commands for object-add/del Igor Mammedov
2013-12-16 20:03 ` Luiz Capitulino
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52A75A29.1030204@redhat.com \
--to=pbonzini@redhat.com \
--cc=akong@redhat.com \
--cc=armbru@redhat.com \
--cc=eblake@redhat.com \
--cc=imammedo@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).