[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 13/15] char: use chardev's gcontext for async
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH v2 13/15] char: use chardev's gcontext for async connect |
Date: |
Thu, 1 Mar 2018 18:38:43 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 |
On 01/03/2018 09:44, Peter Xu wrote:
> Generalize the function to create the async QIO task connection. Also,
> fix the context pointer to use the chardev's gcontext.
>
> Signed-off-by: Peter Xu <address@hidden>
> ---
> chardev/char-socket.c | 25 ++++++++++++++-----------
> 1 file changed, 14 insertions(+), 11 deletions(-)
>
> diff --git a/chardev/char-socket.c b/chardev/char-socket.c
> index bd90680f5c..cd9db123f2 100644
> --- a/chardev/char-socket.c
> +++ b/chardev/char-socket.c
> @@ -894,11 +894,22 @@ cleanup:
> object_unref(OBJECT(sioc));
> }
>
> +static void tcp_chr_connect_async(Chardev *chr)
> +{
> + SocketChardev *s = SOCKET_CHARDEV(chr);
> + QIOChannelSocket *sioc;
> +
> + sioc = qio_channel_socket_new();
> + tcp_chr_set_client_ioc_name(chr, sioc);
> + qio_channel_socket_connect_async(sioc, s->addr,
> + qemu_chr_socket_connected,
> + chr, NULL, chr->gcontext);
> +}
> +
> static gboolean socket_reconnect_timeout(gpointer opaque)
> {
> Chardev *chr = CHARDEV(opaque);
> SocketChardev *s = SOCKET_CHARDEV(opaque);
> - QIOChannelSocket *sioc;
>
> g_source_unref(s->reconnect_timer);
> s->reconnect_timer = NULL;
> @@ -907,11 +918,7 @@ static gboolean socket_reconnect_timeout(gpointer opaque)
> return false;
> }
>
> - sioc = qio_channel_socket_new();
> - tcp_chr_set_client_ioc_name(chr, sioc);
> - qio_channel_socket_connect_async(sioc, s->addr,
> - qemu_chr_socket_connected,
> - chr, NULL, NULL);
> + tcp_chr_connect_async(chr);
>
> return false;
> }
> @@ -991,11 +998,7 @@ static void qmp_chardev_open_socket(Chardev *chr,
> }
>
> if (s->reconnect_time) {
> - sioc = qio_channel_socket_new();
> - tcp_chr_set_client_ioc_name(chr, sioc);
> - qio_channel_socket_connect_async(sioc, s->addr,
> - qemu_chr_socket_connected,
> - chr, NULL, NULL);
> + tcp_chr_connect_async(chr);
> } else {
> if (s->is_listen) {
> char *name;
>
Reviewed-by: Paolo Bonzini <address@hidden>
- Re: [Qemu-devel] [PATCH v2 09/15] qio: non-default context for threaded qtask, (continued)
- [Qemu-devel] [PATCH v2 11/15] qio: non-default context for TLS handshake, Peter Xu, 2018/03/01
- [Qemu-devel] [PATCH v2 12/15] chardev: introduce chr_machine_done hook, Peter Xu, 2018/03/01
- [Qemu-devel] [PATCH v2 13/15] char: use chardev's gcontext for async connect, Peter Xu, 2018/03/01
- Re: [Qemu-devel] [PATCH v2 13/15] char: use chardev's gcontext for async connect,
Paolo Bonzini <=
- [Qemu-devel] [PATCH v2 14/15] chardev: tcp: postpone async connection setup, Peter Xu, 2018/03/01
- [Qemu-devel] [PATCH v2 15/15] chardev: tcp: postpone TLS work until machine done, Peter Xu, 2018/03/01
- Re: [Qemu-devel] [PATCH v2 00/15] qio: general non-default GMainContext support, Daniel P . Berrangé, 2018/03/01