summaryrefslogtreecommitdiff
path: root/doc/zmq_msg_init_data.txt
blob: 1ae6ce20ff8cc0b18780f3df17f6a824edbdfb3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
zmq_msg_init_data(3)
====================


NAME
----
zmq_msg_init_data - initialises 0MQ message from the given data


SYNOPSIS
--------
'typedef void (zmq_free_fn) (void *data, void *hint);'
'int zmq_msg_init_data (zmq_msg_t *msg, void *data, size_t size, zmq_free_fn *ffn, void *hint);'


DESCRIPTION
-----------
Initialise a message from a supplied buffer. Message isn't copied,
instead 0MQ infrastructure takes ownership of the buffer located at address
'data', 'size' bytes long.  Deallocation function ('ffn') will be called once
the data are not needed anymore. When using a static constant buffer, 'ffn' may
be NULL to prevent subsequent deallocation. If needed, additional 'hint' can be
passed to the initialisation function. It's an opaque pointer that will be
later on passed to 'ffn' as a second argument.


RETURN VALUE
------------
In case of success the function returns zero. Otherwise it returns -1 and
sets 'errno' to the appropriate value.


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


EXAMPLE
-------
----
void my_free (void *data, void *hint) {free (data);}

        ...

void *data = malloc (6);
assert (data);
memcpy (data, "ABCDEF", 6);
zmq_msg_t msg;
rc = zmq_msg_init_data (&msg, data, 6, my_free, NULL);
assert (rc == 0);
rc = zmq_send (s, &msg, 0);
assert (rc == 0);
----


SEE ALSO
--------
linkzmq:zmq_msg_close[3]
linkzmq:zmq_msg_init[3]
linkzmq:zmq_msg_init_size[3]
linkzmq:zmq_msg_data[3]
linkzmq:zmq_msg_size[3]


AUTHOR
------
Martin Sustrik <sustrik at 250bpm dot com>