[Spice-devel] [spice-server 1/3] channel: Call red_channel_disconnect_if_pending_send() from red_channel_wait_all_sent()

Christophe Fergeau cfergeau at redhat.com
Mon Sep 4 15:25:34 UTC 2017


On Mon, Sep 04, 2017 at 10:39:53AM -0400, Frediano Ziglio wrote:
> > 
> > On Mon, Sep 04, 2017 at 09:04:03AM -0400, Frediano Ziglio wrote:
> > > > 
> > > > On Mon, Sep 04, 2017 at 06:06:57AM -0400, Frediano Ziglio wrote:
> > > > > > 
> > > > > > On Fri, Sep 01, 2017 at 06:19:28AM -0400, Frediano Ziglio wrote:
> > > > > > > > 
> > > > > > > > red_channel_disconnect_if_pending_send() and
> > > > > > > > red_channel_wait_all_sent()
> > > > > > > > are
> > > > > > > > always called together, we can remove one of the 2 methods.
> > > > > > > > 
> > > > > > > 
> > > > > > > Looks a good idea but I think that the function deserve a new name
> > > > > > 
> > > > > > I would not know how to change the name though :-/
> > > > > > 
> > > > > 
> > > > > Mumble... red_channel_goodbye_bad_guys ? :-)
> > > > > More serious red_channel_disconnect_slow_clients.
> > > > 
> > > > Oh wait, were you talking about
> > > > red_channel_disconnect_if_pending_send()?
> > > > I thought you wanted to rename red_channel_wait_all_sent()
> > > > 
> > > > Christophe
> > > > 
> > > 
> > > Yes, red_channel_wait_all_sent. The callers at the end with the
> > > new function will get this service, right? The wait is a "detail"
> > > that can be documented as the way to detect the slow ones.
> > 
> > For me the main intent of red_channel_wait_all_sent() is to try as hard
> > as possible to flush pending data. The disconnection is just a last
> > resort measure if there really is a client which is far too slow to
> > flush its queue. So I don't see
> > s/red_channel_wait_all_sent/red_channel_disconnect_slow_clients/ as a
> > good renaming. I definitely would do
> > s/red_channel_disconnect_if_pending_send/red_channel_disconnect_slow_clients/
> > though.
> > 
> > Christophe
> > 
> 
> I personally expect a wait function to not close a connection.
> If I call poll(2) with a timeout the poll does not close the file
> descriptor.

It does not have much to do with polling imo, it's just flushing
whatever is pending, with a timeout. I understand it can be odd, since
this function is fairly specialized already, I would say this is
acceptable with some additional documentation.
red_channel_flush_and_disconnect_slow_clients() is getting long :)

Christophe


More information about the Spice-devel mailing list