xs_msg_init(3)
==============


NAME
----
xs_msg_init - initialise empty Crossroads message


SYNOPSIS
--------
*int xs_msg_init (xs_msg_t '*msg');*


DESCRIPTION
-----------
The _xs_msg_init()_ function shall initialise the message object referenced by
'msg' to represent an empty message.  This function is most useful when called
before receiving a message with _xs_recv()_.

CAUTION: Never access 'xs_msg_t' members directly, instead always use the
_xs_msg_ family of functions.

CAUTION: The functions _xs_msg_init()_, _xs_msg_init_data()_ and
_xs_msg_init_size()_ are mutually exclusive. Never initialize the same
'xs_msg_t' twice.


RETURN VALUE
------------
The _xs_msg_init()_ function shall return zero if successful. Otherwise it
shall return `-1` and set 'errno' to one of the values defined below.


ERRORS
------
No errors are defined.


EXAMPLE
-------
.Receiving a message from a socket
----
xs_msg_t msg;
rc = xs_msg_init (&msg);
assert (rc == 0);
rc = xs_recv (socket, &msg, 0);
assert (rc == 0);
----


SEE ALSO
--------
linkxs:xs_msg_init_size[3]
linkxs:xs_msg_init_data[3]
linkxs:xs_msg_close[3]
linkxs:xs_msg_data[3]
linkxs:xs_msg_size[3]
linkxs:xs[7]


AUTHORS
-------
The Crossroads documentation was written by Martin Sustrik <sustrik@250bpm.com>
and Martin Lucina <martin@lucina.net>.
