Il 12/09/2013 14:08, Kevin Wolf ha scritto: > 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' > } }
I didn't know about all this cool stuff you added. :) Paolo