]> git.ipfire.org Git - thirdparty/libvirt.git/commit
Provide a simple object for encoding/decoding RPC messages
authorDaniel P. Berrange <berrange@redhat.com>
Mon, 6 Dec 2010 17:03:22 +0000 (17:03 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Fri, 24 Jun 2011 10:48:14 +0000 (11:48 +0100)
commitceacc1dd4f73c87bc2521bd35dec97a3c4866e78
tree8bf6db6f67dc96bf7a295d5ce9655b4a9e5a9467
parent980a132a24309a054049c881bf81b74f344daf4f
Provide a simple object for encoding/decoding RPC messages

This provides a new struct that contains a buffer for the RPC
message header+payload, as well as a decoded copy of the message
header. There is an API for applying a XDR encoding & decoding
of the message headers and payloads. There are also APIs for
maintaining a simple FIFO queue of message instances.

Expected usage scenarios are:

To send a message

   msg = virNetMessageNew()

   ...fill in msg->header fields..
   virNetMessageEncodeHeader(msg)
   ...loook at msg->header fields to determine payload filter
   virNetMessageEncodePayload(msg, xdrfilter, data)
   ...send msg->bufferLength worth of data from buffer

To receive a message

   msg = virNetMessageNew()
   ...read VIR_NET_MESSAGE_LEN_MAX of data into buffer
   virNetMessageDecodeLength(msg)
   ...read msg->bufferLength-msg->bufferOffset of data into buffer
   virNetMessageDecodeHeader(msg)
   ...look at msg->header fields to determine payload filter
   virNetMessageDecodePayload(msg, xdrfilter, data)
   ...run payload processor

* src/Makefile.am: Add to libvirt-net-rpc.la
* src/rpc/virnetmessage.c, src/rpc/virnetmessage.h: Internal
  message handling API.
* testutils.c, testutils.h: Helper for printing binary differences
* virnetmessagetest.c: Validate all XDR encoding/decoding
cfg.mk
po/POTFILES.in
src/Makefile.am
src/rpc/virnetmessage.c [new file with mode: 0644]
src/rpc/virnetmessage.h [new file with mode: 0644]
tests/.gitignore
tests/Makefile.am
tests/testutils.c
tests/testutils.h
tests/virnetmessagetest.c [new file with mode: 0644]