[Spice-devel] [spice-gtk v4 10/24] file-xfer: improve helper function to queue agent message
Victor Toso
lists at victortoso.com
Tue Jun 28 13:06:51 UTC 2016
Hi,
On Fri, Jun 24, 2016 at 03:04:03PM -0500, Jonathon Jongsma wrote:
> On Thu, 2016-06-23 at 19:37 +0200, Victor Toso wrote:
> > file_xfer_queue() function belongs to channel-main so it should not
> > access SpiceFileTransferTask private struct (self->buffer).
> >
> > This patch changes:
> > * rename function: file_xfer_queue -> file_xfer_queue_msg_to_agent
> > As it makes more clear what this helper function does;
> > * rename variabale: self -> xfer_task
>
> variable
Fixed
>
> > As this is not a SpiceFileTransferTask' function.
> > * Use buffer provided by spice_file_transfer_task_read_finish()
> > instead of accessing SpiceFileTransferTask's private structure
> >
> > This change is related to split SpiceFileTransferTask from
> > channel-main.
> > ---
> > src/channel-main.c | 10 +++++-----
> > 1 file changed, 5 insertions(+), 5 deletions(-)
> >
> > diff --git a/src/channel-main.c b/src/channel-main.c
> > index fef72cd..e57ee73 100644
> > --- a/src/channel-main.c
> > +++ b/src/channel-main.c
> > @@ -1935,19 +1935,19 @@ static void file_xfer_data_flushed_cb(GObject
> > *source_object,
> > spice_file_transfer_task_read_async(self, file_xfer_read_async_cb, NULL);
> > }
> >
> > -static void file_xfer_queue(SpiceFileTransferTask *self, int data_size)
> > +static void file_xfer_queue_msg_to_agent(SpiceFileTransferTask *xfer_task,
> > gchar *buffer, int data_size)
> > {
> > VDAgentFileXferDataMessage msg;
> > SpiceMainChannel *channel;
> >
> > - channel = spice_file_transfer_task_get_channel(self);
> > + channel = spice_file_transfer_task_get_channel(xfer_task);
> > g_return_if_fail(channel != NULL);
> >
> > - msg.id = spice_file_transfer_task_get_id(self);
> > + msg.id = spice_file_transfer_task_get_id(xfer_task);
> > msg.size = data_size;
> > agent_msg_queue_many(channel, VD_AGENT_FILE_XFER_DATA,
> > &msg, sizeof(msg),
> > - self->buffer, data_size, NULL);
> > + buffer, data_size, NULL);
> > spice_channel_wakeup(SPICE_CHANNEL(channel), FALSE);
> > }
> >
> > @@ -1973,7 +1973,7 @@ static void file_xfer_read_async_cb(GObject
> > *source_object,
> > return;
> > }
> >
> > - file_xfer_queue(xfer_task, count);
> > + file_xfer_queue_msg_to_agent(xfer_task, buffer, count);
> > if (count == 0)
> > /* on EOF just wait for VD_AGENT_FILE_XFER_STATUS from agent */
> > return;
>
> Looks fine, but personally I'm not sure that we really even need a
> separate function for this. It's only called from a single place, and
> it's a very small function. If we just moved the code into the calling
> function, we'd probably end up with smaller and more-readable code and
> wouldn't need to worry about the function name, etc.
>
> Another alternative is something like:
>
> static void file_xfer_queue_msg_to_agent(SpiceMainChannel*, guint32 task_id,
> gchar *buffer, int data_size)
Agreed!
> It feels a bit awkward to me to pass the SpiceFileTransferTask to this
> function and then just extract a couple pieces of data from it.
>
> But even so, this is an improvement over the current code, so if you
> want to keep it this way, I won't argue.
I'll change it!
As I mentioned before, I think we can think about overall improvements
on these file_xfer_* functions but I tried to avoid for now to avoid
introducing more possibilities to (track) errors.
>
> Reviewed-by: Jonathon Jongsma <jjongsma at redhat.com>
Thanks!
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
More information about the Spice-devel
mailing list