[Spice-devel] [RFC spice-vdagent 18/18] vdagentd: move code to do_agent_file_xfer_status()
Victor Toso
victortoso at redhat.com
Tue Aug 28 06:25:20 UTC 2018
Hi,
On Tue, Aug 14, 2018 at 08:53:52PM +0200, Jakub Janků wrote:
> Move code handling VDAGENTD_FILE_XFER_STATUS
> from agent_read_complete() to a separate function
> to make the switch statement less cluttered.
>
> Improve formatting a bit.
If you send this outside of glib integration series, I'd be happy
to apply before the glib integration too
Reviewed-by: Victor Toso <victortoso at redhat.com>
Victor
> ---
> src/vdagentd/vdagentd.c | 61 +++++++++++++++++++++++++----------------
> 1 file changed, 37 insertions(+), 24 deletions(-)
>
> diff --git a/src/vdagentd/vdagentd.c b/src/vdagentd/vdagentd.c
> index e975abd..56c82b2 100644
> --- a/src/vdagentd/vdagentd.c
> +++ b/src/vdagentd/vdagentd.c
> @@ -918,6 +918,41 @@ static void do_guest_xorg_resolution(struct udscs_connection **connp,
> check_xorg_resolution();
> }
>
> +static void do_agent_file_xfer_status(struct udscs_connection **connp,
> + struct udscs_message_header *header,
> + guint8 *data)
> +{
> + gpointer task_id = GUINT_TO_POINTER(GUINT32_TO_LE(header->arg1));
> +
> + /* header->arg1 = file xfer task id, header->arg2 = file xfer status */
> + switch (header->arg2) {
> + case VD_AGENT_FILE_XFER_STATUS_NOT_ENOUGH_SPACE: {
> + uint64_t free_space = GUINT64_TO_LE(*((uint64_t*)data));
> + send_file_xfer_status(virtio_port,
> + "Not enough free space. Cancelling file-xfer %u",
> + header->arg1, header->arg2,
> + (uint8_t*)&free_space, sizeof(uint64_t));
> + break;
> + }
> + case VD_AGENT_FILE_XFER_STATUS_DISABLED:
> + send_file_xfer_status(virtio_port,
> + "File-xfer is disabled. Cancelling file-xfer %u",
> + header->arg1, header->arg2,
> + NULL, 0);
> + break;
> + default:
> + send_file_xfer_status(virtio_port,
> + NULL,
> + header->arg1, header->arg2,
> + NULL, 0);
> + }
> +
> + if (header->arg2 == VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA)
> + g_hash_table_insert(active_xfers, task_id, *connp);
> + else
> + g_hash_table_remove(active_xfers, task_id);
> +}
> +
> static void agent_read_complete(struct udscs_connection **connp,
> struct udscs_message_header *header, uint8_t *data)
> {
> @@ -934,31 +969,9 @@ static void agent_read_complete(struct udscs_connection **connp,
> return;
> }
> break;
> - case VDAGENTD_FILE_XFER_STATUS:{
> - /* header->arg1 = file xfer task id, header->arg2 = file xfer status */
> - switch (header->arg2) {
> - case VD_AGENT_FILE_XFER_STATUS_NOT_ENOUGH_SPACE: {
> - uint64_t free_space = GUINT64_TO_LE(*((uint64_t*)data));
> - send_file_xfer_status(virtio_port, "Not enough free space. Cancelling file-xfer %u",
> - header->arg1, header->arg2,
> - (uint8_t*)&free_space, sizeof(uint64_t));
> - break;
> - }
> - case VD_AGENT_FILE_XFER_STATUS_DISABLED:
> - send_file_xfer_status(virtio_port, "File-xfer is disabled, cancelling",
> - header->arg1, header->arg2, NULL, 0);
> - break;
> - default:
> - send_file_xfer_status(virtio_port, NULL, header->arg1, header->arg2, NULL, 0);
> - }
> -
> - if (header->arg2 == VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA)
> - g_hash_table_insert(active_xfers, GUINT_TO_POINTER(GUINT32_TO_LE(header->arg1)),
> - *connp);
> - else
> - g_hash_table_remove(active_xfers, GUINT_TO_POINTER(GUINT32_TO_LE(header->arg1)));
> + case VDAGENTD_FILE_XFER_STATUS:
> + do_agent_file_xfer_status(connp, header, data);
> break;
> - }
>
> default:
> syslog(LOG_ERR, "unknown message from vdagent: %u, ignoring",
> --
> 2.17.1
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20180828/263b9594/attachment.sig>
More information about the Spice-devel
mailing list