From: Eric Blake <eblake@redhat.com>
To: minyard@acm.org, qemu-devel@nongnu.org
Cc: mjg59@srcf.ucam.org, mst@redhat.com, hwd@huawei.com,
bcketchum@gmail.com, Corey Minyard <cminyard@mvista.com>,
afaerber@suse.de
Subject: Re: [Qemu-devel] [PATCH 5/6] qemu-char: Add reconnecting to client sockets
Date: Mon, 22 Sep 2014 14:24:28 -0600 [thread overview]
Message-ID: <5420857C.8050504@redhat.com> (raw)
In-Reply-To: <1411340664-26912-6-git-send-email-minyard@acm.org>
[-- Attachment #1: Type: text/plain, Size: 3322 bytes --]
On 09/21/2014 05:04 PM, minyard@acm.org wrote:
> From: Corey Minyard <cminyard@mvista.com>
>
> Adds a "reconnect" option to socket backends that gives a reconnect
> timeout. This only applies to client sockets. If the other end
> of a socket closes the connection, qemu will attempt to reconnect
> after the given number of seconds.
>
> Signed-off-by: Corey Minyard <cminyard@mvista.com>
> ---
> qapi-schema.json | 14 +++++----
> qemu-char.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
> qemu-options.hx | 20 ++++++++-----
> 3 files changed, 106 insertions(+), 17 deletions(-)
>
> diff --git a/qapi-schema.json b/qapi-schema.json
> index 689b548..79f7a07 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -2648,14 +2648,18 @@
> # @nodelay: #optional set TCP_NODELAY socket option (default: false)
> # @telnet: #optional enable telnet protocol on server
> # sockets (default: false)
> +# @reconnect: #optional If not a server socket, if the socket disconnect
Awkward. How about:
For a client socket, if a disconnect is detected,
> +# then reconnect after the given number of seconds. Setting
> +# to zero disables this function. (default: 0). Since: 2.2.
I think this is usually written "(Since 2.2)" rather than "Since: 2.2"
when it occurs in the middle of a single option.
> #
> # Since: 1.4
> ##
> -{ 'type': 'ChardevSocket', 'data': { 'addr' : 'SocketAddress',
> - '*server' : 'bool',
> - '*wait' : 'bool',
> - '*nodelay' : 'bool',
> - '*telnet' : 'bool' } }
> +{ 'type': 'ChardevSocket', 'data': { 'addr' : 'SocketAddress',
> + '*server' : 'bool',
> + '*wait' : 'bool',
> + '*nodelay' : 'bool',
> + '*telnet' : 'bool',
> + '*reconnect' : 'int' } }
Hmm, thinking aloud here. What happens if 'reconnect' is provided with a
'server':true socket? The documentation only specifies 'server':false
behavior. Should it be an error (incompatible options), or just be
silently ignored?
Going further, would it be possible to treat 'ChardevSocket' as a flat
union, where 'server' is the enum key that determines what other fields
are valid? Granted, for this to work, we'd need to teach the qapi
generator to allow a discriminator of type bool (since we can enumerate
all of its values). looking something like:
{ 'type': 'ChardevSocketBase',
'data': { 'addr': 'SocketAddress', '*nodelay': 'bool' } }
{ 'type': 'ChardevSocketServer',
'data': { '*wait': 'bool', '*telnet': 'bool' } }
{ 'type': 'ChardevSocketClient',
'data': { '*reconnect': 'int' } }
{ 'union': 'ChardevSocket', 'base': 'ChardevSocketBase',
'discriminator': 'bool',
'data': { true : 'ChardevSocketServer',
false: 'ChardevSocketClient' } }
but I don't know if it is worth the complexity for the added type safety.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 539 bytes --]
next prev parent reply other threads:[~2014-09-22 20:24 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-21 23:04 [Qemu-devel] [PATCH 0/6] Add reconnect capability for client sockets minyard
2014-09-21 23:04 ` [Qemu-devel] [PATCH 1/6] qemu-char: Make the filename size for a chardev a #define minyard
2014-09-22 7:46 ` Paolo Bonzini
2014-09-21 23:04 ` [Qemu-devel] [PATCH 2/6] qemu-char: Rework qemu_chr_open_socket() for reconnect minyard
2014-09-22 8:08 ` Paolo Bonzini
2014-09-21 23:04 ` [Qemu-devel] [PATCH 3/6] qemu-char: Move some items into TCPCharDriver minyard
2014-09-22 7:46 ` Paolo Bonzini
2014-09-21 23:04 ` [Qemu-devel] [PATCH 4/6] qemu-char: set socket filename to disconnected when not connected minyard
2014-09-22 8:06 ` Paolo Bonzini
2014-09-22 13:15 ` Corey Minyard
2014-09-22 13:25 ` Paolo Bonzini
2014-09-22 13:30 ` Corey Minyard
2014-09-22 13:39 ` Paolo Bonzini
2014-09-21 23:04 ` [Qemu-devel] [PATCH 5/6] qemu-char: Add reconnecting to client sockets minyard
2014-09-22 8:02 ` Paolo Bonzini
2014-09-22 20:24 ` Eric Blake [this message]
2014-09-22 20:36 ` Corey Minyard
2014-09-22 20:53 ` Eric Blake
2014-09-21 23:04 ` [Qemu-devel] [PATCH 6/6] qemu-char: Print the remote and local addresses for a socket minyard
2014-09-22 8:02 ` Paolo Bonzini
-- strict thread matches above, loose matches on Subject: below --
2014-09-22 16:59 [Qemu-devel] [PATCH v2 0/6] chardev: Add reconnecting to client sockets minyard
2014-09-22 16:59 ` [Qemu-devel] [PATCH 5/6] qemu-char: " minyard
2014-09-22 20:26 ` Eric Blake
2014-09-25 20:07 [Qemu-devel] [PATCH v3 0/6] chardev: " minyard
2014-09-25 20:07 ` [Qemu-devel] [PATCH 5/6] qemu-char: " minyard
2014-10-01 12:38 ` Corey Minyard
2014-10-01 18:15 ` Paolo Bonzini
2014-10-01 19:10 ` Eric Blake
2014-10-01 21:03 ` Corey Minyard
2014-10-01 21:09 [Qemu-devel] [PATCH v4 0/6] Add reconnect capability to sockets minyard
2014-10-01 21:09 ` [Qemu-devel] [PATCH 5/6] qemu-char: Add reconnecting to client sockets minyard
2014-10-02 12:25 ` Paolo Bonzini
2014-10-02 16:17 [Qemu-devel] [PATCH v5 0/6] " minyard
2014-10-02 16:17 ` [Qemu-devel] [PATCH 5/6] qemu-char: " minyard
2014-10-03 22:22 ` Paolo Bonzini
2014-10-04 3:24 ` Corey Minyard
2014-10-04 15:54 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5420857C.8050504@redhat.com \
--to=eblake@redhat.com \
--cc=afaerber@suse.de \
--cc=bcketchum@gmail.com \
--cc=cminyard@mvista.com \
--cc=hwd@huawei.com \
--cc=minyard@acm.org \
--cc=mjg59@srcf.ucam.org \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.