From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51324) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ae1w2-0002kA-Fm for qemu-devel@nongnu.org; Thu, 10 Mar 2016 09:51:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ae1w1-0001Cw-7y for qemu-devel@nongnu.org; Thu, 10 Mar 2016 09:51:30 -0500 Received: from mx1.redhat.com ([209.132.183.28]:57564) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ae1w1-0001CH-0k for qemu-devel@nongnu.org; Thu, 10 Mar 2016 09:51:29 -0500 Date: Thu, 10 Mar 2016 14:51:24 +0000 From: "Daniel P. Berrange" Message-ID: <20160310145124.GQ25607@redhat.com> References: <1457544504-8548-1-git-send-email-berrange@redhat.com> <1457544504-8548-17-git-send-email-berrange@redhat.com> <56E06319.2040907@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <56E06319.2040907@redhat.com> Subject: Re: [Qemu-devel] [PATCH v1 16/21] char: remove qemu_chr_open_socket_fd method Reply-To: "Daniel P. Berrange" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: Stefan Weil , qemu-devel@nongnu.org, Andrew Baumann On Wed, Mar 09, 2016 at 06:53:29PM +0100, Paolo Bonzini wrote: > > > On 09/03/2016 18:28, Daniel P. Berrange wrote: > > The qemu_chr_open_socket_fd method takes care of either doing a > > synchronous socket connect, or creating a listener socket. Part > > of the work when creating the listener socket is to register a > > watch for incoming clients. The caller of qemu_chr_open_socket_fd > > may not want this watch created, as it might be doing a synchronous > > wait for the first client. Rather than passing yet more parameters > > into qemu_chr_open_socket_fd to let it handle this, just remove > > the qemu_chr_open_socket_fd method an inline its functionality > > into the caller. This allows for a clearer control flow and shorter > > code. > > > > Signed-off-by: Daniel P. Berrange > > --- > > qemu-char.c | 61 +++++++++++++++++++++++++------------------------------------ > > 1 file changed, 25 insertions(+), 36 deletions(-) > > > > diff --git a/qemu-char.c b/qemu-char.c > > index 579c620..fee2540 100644 > > --- a/qemu-char.c > > +++ b/qemu-char.c > > @@ -3109,32 +3109,6 @@ static void qemu_chr_socket_connected(Object *src, Error *err, void *opaque) > > object_unref(OBJECT(sioc)); > > } > > > > -static bool qemu_chr_open_socket_fd(CharDriverState *chr, Error **errp) > > -{ > > - TCPCharDriver *s = chr->opaque; > > - QIOChannelSocket *sioc = qio_channel_socket_new(); > > - > > - if (s->is_listen) { > > - if (qio_channel_socket_listen_sync(sioc, s->addr, errp) < 0) { > > - goto fail; > > - } > > - s->listen_ioc = sioc; > > - s->listen_tag = qio_channel_add_watch( > > - QIO_CHANNEL(s->listen_ioc), G_IO_IN, tcp_chr_accept, chr, NULL); > > - } else { > > - if (qio_channel_socket_connect_sync(sioc, s->addr, errp) < 0) { > > - goto fail; > > - } > > - tcp_chr_new_client(chr, sioc); > > - object_unref(OBJECT(sioc)); > > - } > > - > > - return true; > > - > > - fail: > > - object_unref(OBJECT(sioc)); > > - return false; > > -} > > > > /*********************************************************/ > > /* Ring buffer chardev */ > > @@ -4349,26 +4323,41 @@ static CharDriverState *qmp_chardev_open_socket(const char *id, > > s->reconnect_time = reconnect; > > } > > > > + sioc = qio_channel_socket_new(); > > + qio_channel_set_blocking(QIO_CHANNEL(sioc), true, NULL); > > This might not be needed after all. Indeed, it isn't needed anymore. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|