qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 01/11] QMP: Introduce specification file


From: Filip Navara
Subject: Re: [Qemu-devel] [PATCH 01/11] QMP: Introduce specification file
Date: Wed, 24 Jun 2009 20:23:06 +0200

On Wed, Jun 24, 2009 at 7:39 PM, Vincent Hanquez<address@hidden> wrote:
> On Wed, Jun 24, 2009 at 05:22:07PM +0100, Jamie Lokier wrote:
>> You can code a minimal XML parser in straight C quite easily, if it's
>> a restricted subset.
>
> even the restricted subset is not as straighforward as a json parser. and
> usually using a subset means you can't interact correctly with the one that
> does the full spec.
>
>> XML and JSON both have the same ugly problem with binary data: they
>> can't carry it.  It's usually base64 encoded.  Then again the QEMU
>> monitor is no better this respect :-)
>
> JSon ***DOES*** do binary data.
>
> C String "abc\0\xff" -> Json String "abc\0000\00ff"

I find the Json representation problematic. In C you have two distinct
data types - null-terminated string where the length is implicitly
known from the content (char *string) and a binary data blob (char
*buffer, int size). If you encode them into the same JSON data type
and don't supply "out-of-band" information about which one of the C
types is it, the receiver has no way to decide what to decode it into.
JSONRPC allows supplying this "out-of-band" information only for the
JSON data types which is very limiting.

For text based protocols it's vital to separate the syntax from
semantics and decoding the above would require knowning the specific
context and semantics.

A more natural representation of binary blob in JSON would be array of
numbers, but that would have a big overhead.

Best regards,
Filip Navara




reply via email to

[Prev in Thread] Current Thread [Next in Thread]