FWIW this is the libguestfs RPC protocol:
http://et.redhat.com/~rjones/libguestfs/guestfs.3.html#communication_prot...
http://git.et.redhat.com/?p=libguestfs.git;a=blob;f=src/guestfs_protocol....
It's not directly relevant because at present the server is single-
threaded and answers calls in order.
These are the relevant points of the file transfer system:
- At the API level, you pass in filenames. The caller is responsible
for creating a named pipe in the filesystem, or passing in names like
"/dev/fd/N".
- File transfers are sent using chunked encoding. The key was to
allow cancellation *initiated from either side* (not as easy as it
seems). So if an error occurs at either end, the transfer can be
stopped almost immediately, and synchronization can be reestablished.
The details are in the link above.
Rich.
--
Richard Jones, Emerging Technologies, Red Hat
http://et.redhat.com/~rjones
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into Xen guests.
http://et.redhat.com/~rjones/virt-p2v