From: Anthony Liguori <anthony@codemonkey.ws>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>,
Juan Quintela <quintela@redhat.com>,
qemu-devel@nongnu.org, Markus Armbruster <armbru@redhat.com>,
Luiz Capitulino <lcapitulino@redhat.com>,
Avi Kivity <avi@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 3/8] Add QBuffer
Date: Fri, 14 May 2010 13:15:52 -0500 [thread overview]
Message-ID: <4BED9358.1000106@codemonkey.ws> (raw)
In-Reply-To: <6e14cbfe3764b46d9bd6d2db61d41fd9c85dd54e.1273843151.git.jan.kiszka@siemens.com>
On 05/14/2010 08:20 AM, Jan Kiszka wrote:
> diff --git a/qjson.c b/qjson.c
> index 483c667..4d1c21a 100644
> --- a/qjson.c
> +++ b/qjson.c
> @@ -19,7 +19,9 @@
> #include "qlist.h"
> #include "qbool.h"
> #include "qfloat.h"
> +#include "qbuffer.h"
> #include "qdict.h"
> +#include "base64.h"
>
> typedef struct JSONParsingState
> {
> @@ -235,6 +237,20 @@ static void to_json(const QObject *obj, QString *str)
> }
> break;
> }
> + case QTYPE_QBUFFER: {
> + QBuffer *val = qobject_to_qbuffer(obj);
> + size_t data_size = qbuffer_get_size(val);
> + size_t str_len = ((data_size + 2) / 3) * 4;
> + char *buffer = qemu_malloc(str_len + 3);
> +
> + buffer[0] = '"';
> + base64_encode(qbuffer_get_data(val), data_size, buffer + 1);
> + buffer[str_len + 1] = '"';
> + buffer[str_len + 2] = 0;
> + qstring_append(str, buffer);
> + qemu_free(buffer);
> + break;
> + }
>
Instead of encoding just as a string, it would be a good idea to encode
it as something like:
{'__class__': 'base64', 'data': ...}
We've discussed using hidden properties to describe special things like
abstract classes and since we already have this namespace reserved, I
think it's a good time to use it.
The advantage is that in a dynamic language like Python, the parser can
convert base64 to binary strings automatically without having to
understand the QMP protocol.
Regards,
Anthony Liguori
> case QTYPE_QERROR:
> /* XXX: should QError be emitted? */
> case QTYPE_NONE:
> diff --git a/qobject.h b/qobject.h
> index 07de211..45c4fa0 100644
> --- a/qobject.h
> +++ b/qobject.h
> @@ -44,6 +44,7 @@ typedef enum {
> QTYPE_QFLOAT,
> QTYPE_QBOOL,
> QTYPE_QERROR,
> + QTYPE_QBUFFER,
> } qtype_code;
>
> struct QObject;
>
next prev parent reply other threads:[~2010-05-14 18:16 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-14 13:20 [Qemu-devel] [PATCH 0/8] Basic device state visualization Jan Kiszka
2010-05-14 13:20 ` [Qemu-devel] [PATCH 1/8] qdev: Allow device addressing via 'driver.instance' Jan Kiszka
2010-05-18 12:15 ` Markus Armbruster
2010-05-18 12:31 ` Gerd Hoffmann
2010-05-18 12:38 ` [Qemu-devel] " Juan Quintela
2010-05-18 13:06 ` Gerd Hoffmann
2010-05-18 16:54 ` Jan Kiszka
2010-05-19 8:29 ` [Qemu-devel] " Avi Kivity
2010-05-14 13:20 ` [Qemu-devel] [PATCH 2/8] Add base64 encoder/decoder Jan Kiszka
2010-05-14 13:20 ` [Qemu-devel] [PATCH 3/8] Add QBuffer Jan Kiszka
2010-05-14 18:15 ` Anthony Liguori [this message]
2010-05-15 8:45 ` [Qemu-devel] " Jan Kiszka
2010-05-15 8:49 ` Avi Kivity
2010-05-15 8:59 ` Jan Kiszka
2010-05-15 17:31 ` Avi Kivity
2010-05-16 9:37 ` Paolo Bonzini
2010-05-16 9:50 ` Avi Kivity
2010-05-16 10:15 ` Jan Kiszka
2010-05-16 10:16 ` Paolo Bonzini
2010-05-16 10:49 ` Avi Kivity
2010-05-16 10:04 ` Jan Kiszka
2010-05-16 17:38 ` [Qemu-devel] " Jamie Lokier
2010-05-16 18:03 ` [Qemu-devel] " Jan Kiszka
2010-05-17 20:20 ` Jamie Lokier
2010-05-17 0:12 ` [Qemu-devel] " Anthony Liguori
2010-05-17 6:48 ` Avi Kivity
2010-05-17 7:40 ` [Qemu-devel] " Jan Kiszka
2010-05-17 7:45 ` Avi Kivity
2010-05-17 7:57 ` Jan Kiszka
2010-05-17 8:10 ` Avi Kivity
2010-05-17 8:13 ` Avi Kivity
2010-05-17 8:55 ` Jan Kiszka
2010-05-17 8:59 ` Avi Kivity
2010-05-17 9:17 ` Jan Kiszka
2010-05-17 9:29 ` Avi Kivity
2010-05-18 12:27 ` Markus Armbruster
2010-05-18 17:24 ` Avi Kivity
2010-05-17 13:05 ` Anthony Liguori
2010-05-18 12:28 ` Markus Armbruster
2010-05-14 13:20 ` [Qemu-devel] [PATCH 4/8] monitor: Add basic device state visualization Jan Kiszka
2010-05-18 12:12 ` Markus Armbruster
2010-05-18 17:09 ` [Qemu-devel] " Jan Kiszka
2010-05-14 13:20 ` [Qemu-devel] [PATCH 5/8] qmp: Teach basic capability negotiation to python example Jan Kiszka
2010-05-14 13:20 ` [Qemu-devel] [PATCH 6/8] qmp: Fix python helper /wrt long return strings Jan Kiszka
2010-05-14 13:20 ` [Qemu-devel] [PATCH 7/8] Add QLIST_INSERT_TAIL Jan Kiszka
2010-05-16 9:38 ` [Qemu-devel] " Paolo Bonzini
2010-05-16 10:16 ` Jan Kiszka
2010-05-14 13:20 ` [Qemu-devel] [PATCH 8/8] qdev: Add new devices/buses at the tail Jan Kiszka
2010-05-14 16:12 ` [Qemu-devel] Re: [PATCH 0/8] Basic device state visualization Avi Kivity
2010-05-14 16:24 ` Jan Kiszka
2010-05-14 16:38 ` Avi Kivity
2010-05-14 18:16 ` [Qemu-devel] " Anthony Liguori
2010-05-14 18:50 ` Blue Swirl
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=4BED9358.1000106@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=aliguori@us.ibm.com \
--cc=armbru@redhat.com \
--cc=avi@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=lcapitulino@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.