[Spice-devel] [spice-gtk v4 00/24] move/improve SpiceFileTransferTask

Victor Toso victortoso at redhat.com
Thu Jun 23 17:37:32 UTC 2016


Hi all,

You can find the code on 'move-xfer-last' branch at
https://gitlab.com/victortoso/spice-gtk.git

There were a lot of changes based on last v3 review which makes a little bit
hard to list them all. The goal is to improve file-transfer logic/design so it
can handle per-file operations, errors, cancelation and progress information for
the application but without dealing with protocol specifics.

I hope we can re-use SpiceFileTransferTask in the future but flushing data using
channel-webdav to have better Guest integration.

SpiceFileTransferTask now has a spice_file_transfer_task_init_task_async/finish
and spice_file_transfer_task_read_async/finish functions. These new functions
does help dealing with errors IMHO and I really liked this approach instead the
one in v3.

As per Pavel suggestion, I tried to break a little bit more the patches to make
it easier to review. Some patches might be squashed in the end or not, hopefully
I did not make it harder to review :-)

Cheers,
  toso

Victor Toso (24):
  file-xfer: task-id to start with 1
  file-xfer: get functions for SpiceFileTransferTask
  file-xfer: introduce _create_tasks()
  file-xfer: save GFileInfo for later usage
  file-xfer: introduce functions to init task async
  file-xfer: introduce functions to read file async
  main: to let SpiceFileTransferTask handle errors
  main: let channel-main handle file-xfer messages
  main: do not check for xfer-task errors
  file-xfer: improve helper function to queue agent message
  file-xfer: create helper function to send progress
  file-xfer: a FileTransferOperation per transfer call
  file-xfer: inform agent of errors only when task finished
  file-xfer: call progress_callback per FileTransferOperation
  file-xfer: call user callback once per operation
  file-xfer: do not send EOF to the agent
  file-xfer: Keep namespace of private function
  file-xfer: use helper function for debug xfer-task
  main: use xfer_task instead of task or self
  file-xfer: move to spice-file-transfer-task.c
  tests: file-transfer include simple tests
  tests: file-transfer cancel on task init
  tests: file-transfer cancel on read async
  tests: file-transfer agent cancel

 src/Makefile.am                     |   2 +
 src/channel-main.c                  | 903 +++++++++++-------------------------
 src/spice-file-transfer-task-priv.h |  59 +++
 src/spice-file-transfer-task.c      | 713 ++++++++++++++++++++++++++++
 tests/Makefile.am                   |   2 +
 tests/file-transfer.c               | 356 ++++++++++++++
 6 files changed, 1390 insertions(+), 645 deletions(-)
 create mode 100644 src/spice-file-transfer-task-priv.h
 create mode 100644 src/spice-file-transfer-task.c
 create mode 100644 tests/file-transfer.c

-- 
2.7.4



More information about the Spice-devel mailing list