From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=59818 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PxhpD-000256-EH for qemu-devel@nongnu.org; Thu, 10 Mar 2011 10:30:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PxhpB-0001dM-Gt for qemu-devel@nongnu.org; Thu, 10 Mar 2011 10:30:50 -0500 Received: from mx1.redhat.com ([209.132.183.28]:30240) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PxhpB-0001cx-7M for qemu-devel@nongnu.org; Thu, 10 Mar 2011 10:30:49 -0500 Message-ID: <4D78EEA3.9050401@redhat.com> Date: Thu, 10 Mar 2011 17:30:43 +0200 From: Avi Kivity MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH 19/22] qapi: add QMP put-event command References: <1299460984-15849-1-git-send-email-aliguori@us.ibm.com> <1299460984-15849-20-git-send-email-aliguori@us.ibm.com> <4D778117.9060505@redhat.com> <4D778545.7040403@codemonkey.ws> <4D778797.9090602@redhat.com> <4D778E07.5070408@codemonkey.ws> <4D78C69F.6010003@redhat.com> <4D78DC5A.3000601@codemonkey.ws> <4D78DF3A.9000600@redhat.com> In-Reply-To: <4D78DF3A.9000600@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Markus Armbruster , qemu-devel@nongnu.org, Luiz Capitulino On 03/10/2011 04:24 PM, Avi Kivity wrote: >>> What would the wire exchange look like? >> >> > { 'execute': 'get-block-io-error-event' } >> < { 'return' : 32 } >> ... >> < { 'event': 'BLOCK_IO_ERROR', 'data': { 'action': 'stop', 'device': >> 'ide0-hd0', 'operation': 'read' }, 'tag': 32 } >> ... >> > { 'execute': 'put-event', 'arguments': { 'tag': 32 } } > > > Well, I may be biased, but I prefer my variant. > > btw, it's good to decree that a subscription is immediately followed > by an event with the current state (which means events have to provide > state and be idempotent); so the subscribe-and-query pattern is > provided automatically. > > btw2, I now nominate subscribe and unsubscribe as replacements for get > and put. I also think it should be at the protocol layer: > { execute: some-command, id: foo, arguments: { ... } } < { result: { ... }, id: foo } > { subscribe: block-io-error, id: bar, arguments: { ... } } < { result: { ... } id: bar } < { event: block-io-error, id: bar, data : { ... } } > { unsubscribe: block-io-error, id: bar } < { result: { ... } id: bar } So events are now protocol-level pieces like commands, and the use of tags is uniform. -- error compiling committee.c: too many arguments to function