From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MoGsn-0004Ru-QE for qemu-devel@nongnu.org; Thu, 17 Sep 2009 09:18:45 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MoGsj-0004MU-Ql for qemu-devel@nongnu.org; Thu, 17 Sep 2009 09:18:45 -0400 Received: from [199.232.76.173] (port=50972 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MoGsj-0004MQ-M9 for qemu-devel@nongnu.org; Thu, 17 Sep 2009 09:18:41 -0400 Date: Thu, 17 Sep 2009 10:18:31 -0300 From: Luiz Capitulino Message-ID: <20090917101831.69fc8b1f@doriath> In-Reply-To: <4AB1D99D.5080007@gnu.org> References: <1253136760-3614-1-git-send-email-lcapitulino@redhat.com> <1253136760-3614-3-git-send-email-lcapitulino@redhat.com> <4AB1D99D.5080007@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 2/7] monitor: Handle new and old style handlers List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: qemu-devel On Thu, 17 Sep 2009 08:39:25 +0200 Paolo Bonzini wrote: > On 09/16/2009 11:32 PM, Luiz Capitulino wrote: > > + return (cmd->user_print == NULL ? 0 : 1); > > cmd->user_print != NULL. Right. > I would actually inline it at the use point. Also, calling a function > with an extra argument is fine, so while keeping the void* handler you > can do: > > + QObject *data = NULL; > + int (*handler_new)(Monitor *mon, > + const QDict *params, QObject **ret_data); > > + handler_new = cmd->handler; > + handler_new(mon, qdict, &data); > > + if (cmd->user_print) > + cmd->user_print(mon, data); > + if (data) > + qobject_decref(data); > > If you do not like calling the function with the "wrong" number of > arguments, you can mass-convert the functions to the new prototype new > and leave anyway user_print == NULL. The problem is that the monitor_handler_ported() branch can have additional code in the future (eg. protocol emission code), so different branches makes things easier to understand. > What are the plans for the return code of handler_new? The protocol emission code will use it to emit 'error' or 'success' messages.