qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 08/11] QMP: Asynchronous messages enable/disable


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH 08/11] QMP: Asynchronous messages enable/disable support
Date: Sun, 24 Jan 2010 09:35:50 -0600
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 01/24/2010 05:07 AM, Jamie Lokier wrote:
Avi Kivity wrote:
On 01/22/2010 08:05 PM, Anthony Liguori wrote:
On 01/21/2010 03:09 PM, Luiz Capitulino wrote:
This commit disables asynchronous messages by default and
introduces two new QMP commands: async_msg_enable and
async_msg_disable.

Each QMP Monitor has its own set of asynchronous messages,
so for example, if QEMU is run with two QMP Monitors async
messages setup in one of them doesn't affect the other.

To implement this design a bitmap is introduced to the
Monitor struct, each async message is represented by one bit.

Signed-off-by: Luiz Capitulino<address@hidden>
Ah, I see I was a little confused.

I'd suggest making async message masking an independent mechanism.
Capabilities should strictly deal with protocol changes, not feature
details.

For instance, protocol timestamps are something would reasonable
considered a capability.  Extended data types would be a capability.

Another way to look at it, is that if you're writing a client library,
the capability negotiation should be entirely invisible to the end API
user.
I agree with that, but we can look at async messages as a baseline
protocol capability (thus no negotiation required), and the new command
only enabled individual messages.
I'd like to be able to connect and be sure not to receive any async
messages, from simple scripts with simple output parsing.

You can't have simple output parsing with QMP. You need a full JSON stack. The simplest script would be a python script that uses the builtin json support. Having async messages means that you'll have to loop on recv in order make sure that the response is a command response vs. an async message. It's just a few lines more of code so I have a hard time believing it's really a problem.

But what you probably want is a python QMP library and that would mean you wouldn't need the few more lines of code.

If async messages can only be received as a result of commands which
trigger individual messages, that will be achieved.

But it would be a nice little bonus if disabling async messages caused
all slow commands to be synchronous - that is, the async result
message becomes the command's synchronous result.

I know what you're getting at but I think it's the wrong target for QMP. The goal is not to allow simple, hacky clients, but to provide a robust management API. It should not be difficult to use, but parsing it in a shell with awk is not a requirement in my mind :-)

Regards,

Anthony Liguori





reply via email to

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