• D
    Provide a simple object for encoding/decoding RPC messages · ceacc1dd
    Daniel P. Berrange 提交于
    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
    ceacc1dd
POTFILES.in 3.2 KB