From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MqoNM-0005VJ-82 for qemu-devel@nongnu.org; Thu, 24 Sep 2009 09:28:48 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MqoNH-0005TE-QE for qemu-devel@nongnu.org; Thu, 24 Sep 2009 09:28:47 -0400 Received: from [199.232.76.173] (port=52743 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MqoNH-0005T9-IR for qemu-devel@nongnu.org; Thu, 24 Sep 2009 09:28:43 -0400 Received: from mx1.redhat.com ([209.132.183.28]:20707) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MqoNG-0002Qt-NA for qemu-devel@nongnu.org; Thu, 24 Sep 2009 09:28:43 -0400 Subject: Re: [Qemu-devel] ANN: QEMU Monitor Protocol git tree References: <20090921224430.610da97b@doriath> <87my4l1e4e.fsf@pike.pond.sub.org> <20090924093146.66191c37@doriath> From: Markus Armbruster Date: Thu, 24 Sep 2009 15:28:40 +0200 In-Reply-To: <20090924093146.66191c37@doriath> (Luiz Capitulino's message of "Thu\, 24 Sep 2009 09\:31\:46 -0300") Message-ID: <87r5twqxo7.fsf@pike.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Luiz Capitulino Cc: aliguori@us.ibm.com, qemu-devel@nongnu.org, avi@redhat.com Luiz Capitulino writes: > On Thu, 24 Sep 2009 00:37:53 +0200 > Markus Armbruster wrote: > >> Luiz Capitulino writes: >> >> [...] >> > 2.2 Server Greeting >> > ------------------- >> > >> > Right when connected the Server will issue a greeting message, which signals >> > that the connection has been successfully established and that the Server is >> > waiting for commands. >> > >> > The format is: >> > >> > { "QEMU": json-string, "QMP": json-string, "capabilities": json-array } >> > >> > Where, >> > >> > - The "QEMU" member contains the QEMU version >> > - The "QMP" member contains the QMP version >> > - The "capabilities" member specify the availability of features beyond the >> > baseline specification >> >> What about capability negotiation? Server offers capabilities, client >> can accept or decline them. >> >> [...] > > I think the easiest way to have this would be to add a > monitor command to disable capabilities. Like a command to > disable async messages. Greeting capabilities (for lack of a better word) are for the protocol. Changing protocol capabilities while you use the protocol is awkward. Better do it in an initial handshake. Case in point: if you disable asynchronous messages with a command, you still have to be prepared to receive one between initial handshake and completion of the disable command. If I have to ignore them anyway, why bother with disabling them? The problem becomes more serious if we ever want to add a capability that isn't fully backward compatible. Lack of feature negotiation limits protocol evolvability.