qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] Re: [PATCH 3/8] Add QBuffer


From: Anthony Liguori
Subject: [Qemu-devel] Re: [PATCH 3/8] Add QBuffer
Date: Mon, 17 May 2010 08:05:51 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091209 Fedora/3.0-4.fc12 Lightning/1.0pre Thunderbird/3.0

On 05/17/2010 02:45 AM, Avi Kivity wrote:
On 05/17/2010 10:40 AM, Jan Kiszka wrote:

The alternative is to have a schema. Sun RPC/XDR doesn't carry any type information (you can't even distinguish between a number and text) yet C
clients have to problem extracting typed information from it.

Having __class__ everywhere means we're carrying the schema in every
message instead of just once.
The device_show command is already an example where you don't have a
predefined schema. It is derived from the data stream the encodes the
vmstate fields. So far we have no collision between base64-encoded
buffers and real strings, but this may actually change when we start
annotating the fields with symbolic constants.

What is the receiver to do with it?

If it doesn't know the schema (and there is no schema), then all it can do is display the key/values. If it does know the schema, then __class__ is unnecessary.

My worry is that __class__ will make the protocol more ad-hoc.

I really don't see the problem with __class__. Being a text protocol,
JSON is already fairly verbose.

The problem is not the verbosity, it's that information is carried too late. Many clients want to know this information at compile time or initialization time, and we are providing it at object instantiating time.

Whether a protocol is self-describing is orthogonal to whether it's well defined (ala a schema). A self-describing protocol is very convenient for dynamic languages like Python. We should also provide a formal schema though for languages that require IDL to generate bindings (like C).

Regards,

Anthony Liguori




reply via email to

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