The current libvirtd remote protocol dispatch code is written in such a way that assumes the only incoming messages from clients are method calls. This makes it very hard to support data streams. This patch series does an incrmental refactoring of alot of code to allow data streams to be easily wired in. Daniel P. Berrange (9): Split generic RPC message dispatch code out from remote protocol API handlers Decode incoming request header before invoking dispatch code Separate code for encoding outgoing remote message headers Change code generator to give async event messages their own postfix Move queuing of RPC replies into dispatch code Change the way client event loop watches are managed Split out code for handling incoming method call messages Define an API for registering incoming message dispatch filters Rename 'direction' to 'type' in remote_message_header qemud/Makefile.am | 3 +- qemud/dispatch.c | 533 ++++++++++++++++++++++++++++++++++++ qemud/dispatch.h | 63 +++++ qemud/qemud.c | 136 ++++++---- qemud/qemud.h | 35 ++- qemud/remote.c | 442 ++++-------------------------- qemud/remote.h | 72 +++++ qemud/remote_dispatch_prototypes.h | 7 - qemud/remote_dispatch_ret.h | 1 - qemud/remote_dispatch_table.h | 6 +- qemud/remote_generate_stubs.pl | 23 ++- qemud/remote_protocol.c | 6 +- qemud/remote_protocol.h | 18 +- qemud/remote_protocol.x | 66 ++++-- src/remote_internal.c | 18 +- 15 files changed, 926 insertions(+), 503 deletions(-) create mode 100644 qemud/dispatch.c create mode 100644 qemud/dispatch.h create mode 100644 qemud/remote.h -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list