Ixpmsg, ixpmsgmode, ixp_message
#include <ixp.h> typedef struct IxpMsg IxpMsg; struct IxpMsg { char* data; /* Beginning of buffer. */ char* pos; /* Current position in buffer. */ char* end; /* End of message. */ uint size; /* Size of buffer. */ uint mode; /* MsgPack or MsgUnpack. */ } enum IxpMsgMode { MsgPack, MsgUnpack, } IxpMsg ixp_message(char *data, uint length, uint mode);
The IxpMsg struct represents a binary message, and is used extensively by libixp for converting messages to and from wire format. The location and size of a buffer are stored in data and size, respectively. pos points to the location in the message currently being packed or unpacked, while end points to the end of the message. The packing functions advance pos as they go, always ensuring that they don't read or write past end. When a message is entirely packed or unpacked, pos whould be less than or equal to end. Any other state indicates error.
ixp_message is a convenience function to pack a construct an IxpMsg from a buffer of a given length and a given mode. pos and data are set to data and end is set to data + length.