summaryrefslogtreecommitdiff
path: root/doc/zmq_poll.txt
blob: 8e386bcbdef5f648cf77a13491d4083147fc355e (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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
zmq_poll(3)
===========


NAME
----
zmq_poll - polls for events on a set of 0MQ and POSIX sockets


SYNOPSIS
--------
'int zmq_poll (zmq_pollitem_t *items, int nitems, long timeout);'


DESCRIPTION
-----------
Waits for the events specified by 'items' parameter. Number of items in the
array is determined by 'nitems' argument. Each item in the array looks like
this:

----
typedef struct
{
    void *socket;
    int fd;
    short events;
    short revents;
} zmq_pollitem_t;
----

0MQ socket to poll on is specified by 'socket'.  In case you want to poll on
standard POSIX socket, set 'socket' to NULL and fill the POSIX file descriptor
to 'fd'.  'events' specifies which events to wait for. It's a combination of
the values below.  Once the call exits, 'revents' will be filled with events
that have actually occured on the socket. The field will contain a combination
of the values below.

*ZMQ_POLLIN*::
poll for incoming messages.
*ZMQ_POLLOUT*::
wait while message can be set socket. Poll will return if a message of at least
one byte can be written to the socket. However, there is no guarantee that
arbitrarily large message can be sent.

'timeout' argument specifies an upper limit on the time for which 'zmq_poll'
will block, in microseconds. Specifying a negative value in timeout means an
infinite timeout.


RETURN VALUE
------------
Function returns number of items signaled or -1 in the case of error.


ERRORS
------
*EFAULT*::
there's a 0MQ socket in the pollset belonging to a different application thread.
*ENOTSUP*::
0MQ context was initialised without ZMQ_POLL flag. I/O multiplexing is disabled.


EXAMPLE
-------
----
zmq_pollitem_t items [2];
items [0].socket = s;
items [0].events = ZMQ_POLLIN;
items [1].socket = NULL;
items [1].fd = my_fd;
items [1].events = ZMQ_POLLIN;

int rc = zmq_poll (items, 2);
assert (rc != -1);
----


SEE ALSO
--------
linkzmq:zmq_socket[3]


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