qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [RFC PATCH 0/8] Remove stub mon-protocol-event for bloc


From: Kevin Wolf
Subject: Re: [Qemu-devel] [RFC PATCH 0/8] Remove stub mon-protocol-event for block
Date: Thu, 12 Sep 2013 14:08:53 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

Am 12.09.2013 um 11:31 hat Paolo Bonzini geschrieben:
> Il 12/09/2013 11:15, Wenchao Xia ha scritto:
> > This series will remove the usage of symbols of mon-protocol-event in
> > qemu-img, qemu-nbd and qemu-io, in short remove the connetion for block
> > layer.
> > 
> > Background:
> >   I am tring to decouple block layer code with other unnnessary components,
> > and in ./stub there many symbols that qemu-img linked as fake implemtion.
> > As a first step, I am decouple monitor with block layer code, this is the
> > first part of it.
> >   There are still other stub symbols for monitor, which will be solved 
> > later.
> > It seems error handlering is also link with those symbols, and will adjust
> > that.

> Patches 1-4 look good.  I'm not sure of the advantage of the last four,
> however.  The ugly part of monitor_protocol_event is not really the
> stub, but the dependency on QObject.
> 
> So, in my opinion a more interesting approach would be to describe
> events using QAPI types.  Generating the events would require a small
> amount of code to build QObjects manually, because the event syntax
> doesn't match exactly a QAPI union, but that is only a technical detail.

You mean the QAPI schema cannot describe events? Why do you think so,
and wouldn't this be a reason to extend the schema language?

The QMP spec describes events like this:

{ "event": json-string, "data": json-object,
  "timestamp": { "seconds": json-number, "microseconds": json-number } }

Looks like it could be described as:

{ 'type': 'EventTypeA',
  'data': {
      'data': {
          # event-specific data
      } } }
{ 'type': 'EventBase',
  'data': { 'event': 'str'. 'timestamp': {
      'seconds': 'int', 'microseconds': 'int' } }
{ 'union': 'Event',
  'base:' EventBase',
  'discriminator': 'event',
  'data': {
      'EVENT_NAME_A': 'EventTypeA'
  } }

Kevin



reply via email to

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