mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2026-08-07 09:39:27 +00:00
channel: Remove red_channel_client_disconnect_if_pending_send()
There is exactly one user in RedChannel, and this can be reimplemented using already public RedChannelClient API. No need for an extra function very specialized function with a not great name. This commit thus removes one method from RedChannelClient public API, and replaces it with an equivalent private helper in RedChannel. Signed-off-by: Christophe Fergeau <cfergeau@redhat.com> Acked-by: Frediano Ziglio <fziglio@redhat.com>
This commit is contained in:
parent
685a6288f3
commit
1b7fca87b6
@ -1848,15 +1848,6 @@ bool red_channel_client_wait_outgoing_item(RedChannelClient *rcc,
|
||||
}
|
||||
}
|
||||
|
||||
void red_channel_client_disconnect_if_pending_send(RedChannelClient *rcc)
|
||||
{
|
||||
if (red_channel_client_is_blocked(rcc) || !g_queue_is_empty(&rcc->priv->pipe)) {
|
||||
red_channel_client_disconnect(rcc);
|
||||
} else {
|
||||
spice_assert(red_channel_client_no_item_being_sent(rcc));
|
||||
}
|
||||
}
|
||||
|
||||
gboolean red_channel_client_no_item_being_sent(RedChannelClient *rcc)
|
||||
{
|
||||
return !rcc || (rcc->priv->send_data.size == 0);
|
||||
|
||||
@ -143,7 +143,6 @@ bool red_channel_client_wait_pipe_item_sent(RedChannelClient *rcc,
|
||||
int64_t timeout);
|
||||
bool red_channel_client_wait_outgoing_item(RedChannelClient *rcc,
|
||||
int64_t timeout);
|
||||
void red_channel_client_disconnect_if_pending_send(RedChannelClient *rcc);
|
||||
|
||||
RedChannel* red_channel_client_get_channel(RedChannelClient *rcc);
|
||||
|
||||
|
||||
@ -627,6 +627,19 @@ uint32_t red_channel_sum_pipes_size(RedChannel *channel)
|
||||
return sum;
|
||||
}
|
||||
|
||||
static void red_channel_disconnect_if_pending_send(RedChannel *channel)
|
||||
{
|
||||
RedChannelClient *rcc;
|
||||
|
||||
FOREACH_CLIENT(channel, rcc) {
|
||||
if (red_channel_client_is_blocked(rcc) || !red_channel_client_pipe_is_empty(rcc)) {
|
||||
red_channel_client_disconnect(rcc);
|
||||
} else {
|
||||
spice_assert(red_channel_client_no_item_being_sent(rcc));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool red_channel_wait_all_sent(RedChannel *channel,
|
||||
int64_t timeout)
|
||||
{
|
||||
@ -654,7 +667,7 @@ bool red_channel_wait_all_sent(RedChannel *channel,
|
||||
if (max_pipe_size || blocked) {
|
||||
spice_warning("timeout: pending out messages exist (pipe-size %u, blocked %d)",
|
||||
max_pipe_size, blocked);
|
||||
red_channel_apply_clients(channel, red_channel_client_disconnect_if_pending_send);
|
||||
red_channel_disconnect_if_pending_send(channel);
|
||||
return FALSE;
|
||||
} else {
|
||||
spice_assert(red_channel_no_item_being_sent(channel));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user