mirror of
https://github.com/zeromq/libzmq.git
synced 2025-07-03 17:17:14 +02:00
Documentation updates for 2.1
- Clarify ZMQ_LINGER, zmq_close (), zmq_term () relationship - New socket options - Clarify thread safety of sockets and migration between threads - Other minor and spelling fixes Signed-off-by: Martin Lucina <mato@kotelna.sk>
This commit is contained in:
parent
5bb0a339be
commit
b70d628fad
12
doc/zmq.txt
12
doc/zmq.txt
@ -44,9 +44,15 @@ Terminate 0MQ context::
|
|||||||
Thread safety
|
Thread safety
|
||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
A 0MQ 'context' is thread safe and may be shared among as many application
|
A 0MQ 'context' is thread safe and may be shared among as many application
|
||||||
threads as necessary, without any additional locking required on the part of the
|
threads as necessary, without any additional locking required on the part of
|
||||||
caller. Each 0MQ socket belonging to a particular 'context' may only be used
|
the caller.
|
||||||
by *the thread that created it* using _zmq_socket()_.
|
|
||||||
|
Individual 0MQ 'sockets' are _not_ thread safe except in the case where full
|
||||||
|
memory barriers are issued when migrating a socket from one thread to another.
|
||||||
|
In practice this means applications can create a socket in one thread with
|
||||||
|
_zmq_socket()_ and then pass it to a _newly created_ thread as part of thread
|
||||||
|
initialization, for example via a structure passed as an argument to
|
||||||
|
_pthread_create()_.
|
||||||
|
|
||||||
|
|
||||||
Multiple contexts
|
Multiple contexts
|
||||||
|
@ -16,10 +16,14 @@ DESCRIPTION
|
|||||||
-----------
|
-----------
|
||||||
The _zmq_close()_ function shall destroy the socket referenced by the 'socket'
|
The _zmq_close()_ function shall destroy the socket referenced by the 'socket'
|
||||||
argument. Any outstanding messages physically received from the network but not
|
argument. Any outstanding messages physically received from the network but not
|
||||||
yet received by the application with _zmq_recv()_ shall also be dropped. As for
|
yet received by the application with _zmq_recv()_ shall be discarded. The
|
||||||
the messages sent with _zmq_send()_ but not yet passed to the network, 0MQ
|
behaviour for discarding messages sent by the application with _zmq_send()_ but
|
||||||
will try to send them in the background after _zmq_close()_ returns. Time spent
|
not yet physically transferred to the network depends on the value of the
|
||||||
attempting can be set using _ZMQ_LINGER_ socket option.
|
_ZMQ_LINGER_ socket option for the specified 'socket'.
|
||||||
|
|
||||||
|
NOTE: The default setting of _ZMQ_LINGER_ does not discard unsent messages;
|
||||||
|
this behaviour may cause the application to block when calling _zmq_term()_.
|
||||||
|
For details refer to linkzmq:zmq_setsockopt[3] and linkzmq:zmq_term[3].
|
||||||
|
|
||||||
|
|
||||||
RETURN VALUE
|
RETURN VALUE
|
||||||
|
@ -20,7 +20,7 @@ the calling thread.
|
|||||||
The _zmq_errno()_ function is provided to assist users on non-POSIX systems who
|
The _zmq_errno()_ function is provided to assist users on non-POSIX systems who
|
||||||
are experiencing issues with retrieving the correct value of 'errno' directly.
|
are experiencing issues with retrieving the correct value of 'errno' directly.
|
||||||
Specifically, users on Win32 systems whose application is using a different C
|
Specifically, users on Win32 systems whose application is using a different C
|
||||||
runtime library from the C runtime library in use by 0MQ will need to use
|
run-time library from the C run-time library in use by 0MQ will need to use
|
||||||
_zmq_errno()_ for correct operation.
|
_zmq_errno()_ for correct operation.
|
||||||
|
|
||||||
IMPORTANT: Users not experiencing issues with retrieving the correct value of
|
IMPORTANT: Users not experiencing issues with retrieving the correct value of
|
||||||
|
@ -26,8 +26,8 @@ value stored in the buffer.
|
|||||||
The following options can be retrieved with the _zmq_getsockopt()_ function:
|
The following options can be retrieved with the _zmq_getsockopt()_ function:
|
||||||
|
|
||||||
|
|
||||||
ZMQ_TYPE: Retrieve socket type.
|
ZMQ_TYPE: Retrieve socket type
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The 'ZMQ_TYPE' option shall retrieve the socket type for the specified
|
The 'ZMQ_TYPE' option shall retrieve the socket type for the specified
|
||||||
'socket'. The socket type is specified at socket creation time and
|
'socket'. The socket type is specified at socket creation time and
|
||||||
cannot be modified afterwards.
|
cannot be modified afterwards.
|
||||||
@ -167,13 +167,13 @@ Default value:: 10
|
|||||||
Applicable socket types:: all, when using multicast transports
|
Applicable socket types:: all, when using multicast transports
|
||||||
|
|
||||||
|
|
||||||
ZMQ_MCAST_LOOP: Control multicast loopback
|
ZMQ_MCAST_LOOP: Control multicast loop-back
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The 'ZMQ_MCAST_LOOP' option controls whether data sent via multicast
|
The 'ZMQ_MCAST_LOOP' option controls whether data sent via multicast
|
||||||
transports can also be received by the sending host via loopback. A value of
|
transports can also be received by the sending host via loop-back. A value of
|
||||||
zero indicates that the loopback functionality is disabled, while the default
|
zero indicates that the loop-back functionality is disabled, while the default
|
||||||
value of 1 indicates that the loopback functionality is enabled. Leaving
|
value of 1 indicates that the loop-back functionality is enabled. Leaving
|
||||||
multicast loopback enabled when it is not required can have a negative impact
|
multicast loop-back enabled when it is not required can have a negative impact
|
||||||
on performance. Where possible, disable 'ZMQ_MCAST_LOOP' in production
|
on performance. Where possible, disable 'ZMQ_MCAST_LOOP' in production
|
||||||
environments.
|
environments.
|
||||||
|
|
||||||
@ -214,53 +214,80 @@ Applicable socket types:: all
|
|||||||
|
|
||||||
ZMQ_LINGER: Retrieve linger period for socket shutdown
|
ZMQ_LINGER: Retrieve linger period for socket shutdown
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The 'ZMQ_LINGER' option shall retrieve the period for pending outbound
|
The 'ZMQ_LINGER' option shall retrieve the linger period for the specified
|
||||||
messages to linger in memory after closing the socket. Value of -1 means
|
'socket'. The linger period determines how long pending messages which have
|
||||||
infinite. Pending messages will be kept until they are fully transferred to
|
yet to be sent to a peer shall linger in memory after a socket is closed with
|
||||||
the peer. Value of 0 means that all the pending messages are dropped immediately
|
linkzmq:zmq_close[3], and further affects the termination of the socket's
|
||||||
when socket is closed. Positive value means number of milliseconds to keep
|
context with linkzmq:zmq_term[3]. The following outlines the different
|
||||||
trying to send the pending messages before discarding them.
|
behaviours:
|
||||||
|
|
||||||
|
* The default value of '-1' specifies an infinite linger period. Pending
|
||||||
|
messages shall not be discarded after a call to _zmq_close()_; attempting to
|
||||||
|
terminate the socket's context with _zmq_term()_ shall block until all
|
||||||
|
pending messages have been sent to a peer.
|
||||||
|
|
||||||
|
* The value of '0' specifies no linger period. Pending messages shall be
|
||||||
|
discarded immediately when the socket is closed with _zmq_close()_.
|
||||||
|
|
||||||
|
* Positive values specify an upper bound for the linger period in milliseconds.
|
||||||
|
Pending messages shall not be discarded after a call to _zmq_close()_;
|
||||||
|
attempting to terminate the socket's context with _zmq_term()_ shall block
|
||||||
|
until either all pending messages have been sent to a peer, or the linger
|
||||||
|
period expires, after which any pending messages shall be discarded.
|
||||||
|
|
||||||
[horizontal]
|
[horizontal]
|
||||||
Option value type:: int
|
Option value type:: int
|
||||||
Option value unit:: milliseconds
|
Option value unit:: milliseconds
|
||||||
Default value:: -1
|
Default value:: -1 (infinite)
|
||||||
Applicable socket types:: all
|
Applicable socket types:: all
|
||||||
|
|
||||||
ZMQ_RECONNECT_IVL: Retrieve reconnect period for connection-based transports
|
ZMQ_RECONNECT_IVL: Retrieve reconnection interval
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The 'ZMQ_RECONNECT_IVL' option shall retrieve the period indicating how long it
|
The 'ZMQ_RECONNECT_IVL' option shall retrieve the reconnection interval for the
|
||||||
takes for a disconnected underlying connection to attempt to reconnect.
|
specified 'socket'. The reconnection interval is the maximum period 0MQ shall
|
||||||
|
wait between attempts to reconnect disconnected peers when using
|
||||||
|
connection-oriented transports.
|
||||||
|
|
||||||
|
NOTE: The reconnection interval may be randomized by 0MQ to prevent
|
||||||
|
reconnection storms in topologies with a large number of peers per socket.
|
||||||
|
|
||||||
[horizontal]
|
[horizontal]
|
||||||
Option value type:: int
|
Option value type:: int
|
||||||
Option value unit:: milliseconds
|
Option value unit:: milliseconds
|
||||||
Default value:: 100
|
Default value:: 100
|
||||||
Applicable socket types:: all
|
Applicable socket types:: all, only for connection-oriented transports
|
||||||
|
|
||||||
|
|
||||||
ZMQ_BACKLOG: Retrieve maximum length of the queue of pending connections
|
ZMQ_BACKLOG: Retrieve maximum length of the queue of outstanding connections
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The 'ZMQ_BACKLOG' option shall retrieve maximum size of the
|
The 'ZMQ_BACKLOG' option shall retrieve the maximum length of the queue of
|
||||||
pending connection backlog for connection-based transports. For details
|
outstanding peer connections for the specified 'socket'; this only applies to
|
||||||
refer to your operating system documentation for the 'listen' function.
|
connection-oriented transports. For details refer to your operating system
|
||||||
|
documentation for the 'listen' function.
|
||||||
|
|
||||||
[horizontal]
|
[horizontal]
|
||||||
Option value type:: int
|
Option value type:: int
|
||||||
Option value unit:: connections
|
Option value unit:: connections
|
||||||
Default value:: 100
|
Default value:: 100
|
||||||
Applicable socket types:: all
|
Applicable socket types:: all, only for connection-oriented transports
|
||||||
|
|
||||||
|
|
||||||
ZMQ_FD: Retrieve file descriptor associated with the socket
|
ZMQ_FD: Retrieve file descriptor associated with the socket
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The 'ZMQ_FD' option shall retrieve file descriptor associated with the 0MQ
|
The 'ZMQ_FD' option shall retrieve the file descriptor associated with the
|
||||||
socket. The descriptor can be used to integrate 0MQ socket into an existing
|
specified 'socket'. The returned file descriptor can be used to integrate the
|
||||||
event loop. It should never be used for anything else than polling -- such as
|
socket into an existing event loop; the 0MQ library shall signal any pending
|
||||||
reading or writing. The descriptor signals edge-triggered IN event when
|
events on the socket in an _edge-triggered_ fashion by making the file
|
||||||
something has happened within the 0MQ socket. It does not necessarily mean that
|
descriptor become ready for reading.
|
||||||
the messages can be read or written. Check ZMQ_EVENTS option to find out whether
|
|
||||||
the 0MQ socket is readable or writeable.
|
NOTE: The ability to read from the returned file descriptor does not
|
||||||
|
necessarily indicate that messages are available to be read from, or can be
|
||||||
|
written to, the underlying socket; applications must retrieve the actual event
|
||||||
|
state with a subsequent retrieval of the 'ZMQ_EVENTS' option.
|
||||||
|
|
||||||
|
CAUTION: The returned file descriptor is intended for use with a 'poll' or
|
||||||
|
similar system call only. Applications must never attempt to read or write data
|
||||||
|
to it directly.
|
||||||
|
|
||||||
[horizontal]
|
[horizontal]
|
||||||
Option value type:: int on POSIX systems, SOCKET on Windows
|
Option value type:: int on POSIX systems, SOCKET on Windows
|
||||||
@ -269,11 +296,24 @@ Default value:: N/A
|
|||||||
Applicable socket types:: all
|
Applicable socket types:: all
|
||||||
|
|
||||||
|
|
||||||
ZMQ_EVENTS: Check whether socket is readable and/or writeable
|
ZMQ_EVENTS: Retrieve socket event state
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The 'ZMQ_EVENTS' option shall retrieve event flags for the specified socket.
|
The 'ZMQ_EVENTS' option shall retrieve the event state for the specified
|
||||||
If a message can be read from the socket ZMQ_POLLIN flag is set. If message can
|
'socket'. The returned value is a bit mask constructed by OR'ing a combination
|
||||||
be written to the socket ZMQ_POLLOUT flag is set.
|
of the following event flags:
|
||||||
|
|
||||||
|
*ZMQ_POLLIN*::
|
||||||
|
Indicates that at least one message may be received from the specified socket
|
||||||
|
without blocking.
|
||||||
|
|
||||||
|
*ZMQ_POLLOUT*::
|
||||||
|
Indicates that at least one message may be sent to the specified socket without
|
||||||
|
blocking.
|
||||||
|
|
||||||
|
The combination of a file descriptor returned by the 'ZMQ_FD' option being
|
||||||
|
ready for reading but no actual events returned by a subsequent retrieval of
|
||||||
|
the 'ZMQ_EVENTS' option is valid; applications should simply ignore this case
|
||||||
|
and restart their polling operation/event loop.
|
||||||
|
|
||||||
[horizontal]
|
[horizontal]
|
||||||
Option value type:: uint32_t
|
Option value type:: uint32_t
|
||||||
|
@ -24,7 +24,7 @@ The 'pgm' and 'epgm' transports can only be used with the 'ZMQ_PUB' and
|
|||||||
'ZMQ_SUB' socket types.
|
'ZMQ_SUB' socket types.
|
||||||
|
|
||||||
Further, PGM sockets are rate limited by default and incur a performance
|
Further, PGM sockets are rate limited by default and incur a performance
|
||||||
penalty when used over a loopback interface. For details, refer to the
|
penalty when used over a loop-back interface. For details, refer to the
|
||||||
'ZMQ_RATE', 'ZMQ_RECOVERY_IVL' and 'ZMQ_MCAST_LOOP' options documented in
|
'ZMQ_RATE', 'ZMQ_RECOVERY_IVL' and 'ZMQ_MCAST_LOOP' options documented in
|
||||||
linkzmq:zmq_setsockopt[3].
|
linkzmq:zmq_setsockopt[3].
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ representation.
|
|||||||
|
|
||||||
WIRE FORMAT
|
WIRE FORMAT
|
||||||
-----------
|
-----------
|
||||||
Consecutive PGM datagrams are interpreted by 0MQ as a single continous stream
|
Consecutive PGM datagrams are interpreted by 0MQ as a single continuous stream
|
||||||
of data where 0MQ messages are not necessarily aligned with PGM datagram
|
of data where 0MQ messages are not necessarily aligned with PGM datagram
|
||||||
boundaries and a single 0MQ message may span several PGM datagrams. This stream
|
boundaries and a single 0MQ message may span several PGM datagrams. This stream
|
||||||
of data consists of 0MQ messages encapsulated in 'frames' as described in
|
of data consists of 0MQ messages encapsulated in 'frames' as described in
|
||||||
@ -130,7 +130,7 @@ EXAMPLE
|
|||||||
.Connecting a socket
|
.Connecting a socket
|
||||||
----
|
----
|
||||||
/* Connecting to the multicast address 239.192.1.1, port 5555, */
|
/* Connecting to the multicast address 239.192.1.1, port 5555, */
|
||||||
/* using the first ethernet network interface on Linux */
|
/* using the first Ethernet network interface on Linux */
|
||||||
/* and the Encapsulated PGM protocol */
|
/* and the Encapsulated PGM protocol */
|
||||||
rc = zmq_connect(socket, "epgm://eth0;239.192.1.1:5555");
|
rc = zmq_connect(socket, "epgm://eth0;239.192.1.1:5555");
|
||||||
assert (rc == 0);
|
assert (rc == 0);
|
||||||
|
@ -40,17 +40,17 @@ NOTE: All 0MQ sockets passed to the _zmq_poll()_ function must share the
|
|||||||
same 0MQ 'context' and must belong to the thread calling _zmq_poll()_.
|
same 0MQ 'context' and must belong to the thread calling _zmq_poll()_.
|
||||||
|
|
||||||
For each *zmq_pollitem_t* item, _zmq_poll()_ shall first clear the 'revents'
|
For each *zmq_pollitem_t* item, _zmq_poll()_ shall first clear the 'revents'
|
||||||
member, and then indicate any requested events that have occured by setting the
|
member, and then indicate any requested events that have occurred by setting the
|
||||||
bit corresponding to the event condition in the 'revents' member.
|
bit corresponding to the event condition in the 'revents' member.
|
||||||
|
|
||||||
If none of the requested events have occured on any *zmq_pollitem_t* item,
|
If none of the requested events have occurred on any *zmq_pollitem_t* item,
|
||||||
_zmq_poll()_ shall wait 'timeout' microseconds for an event to occur on
|
_zmq_poll()_ shall wait 'timeout' microseconds for an event to occur on
|
||||||
any of the requested items. If the value of 'timeout' is `0`, _zmq_poll()_
|
any of the requested items. If the value of 'timeout' is `0`, _zmq_poll()_
|
||||||
shall return immediately. If the value of 'timeout' is `-1`, _zmq_poll()_ shall
|
shall return immediately. If the value of 'timeout' is `-1`, _zmq_poll()_ shall
|
||||||
block indefinitely until a requested event has occured on at least one
|
block indefinitely until a requested event has occurred on at least one
|
||||||
*zmq_pollitem_t*.
|
*zmq_pollitem_t*.
|
||||||
|
|
||||||
The 'events' and 'revents' members of *zmq_pollitem_t* are bitmasks constructed
|
The 'events' and 'revents' members of *zmq_pollitem_t* are bit masks constructed
|
||||||
by OR'ing a combination of the following event flags:
|
by OR'ing a combination of the following event flags:
|
||||||
|
|
||||||
*ZMQ_POLLIN*::
|
*ZMQ_POLLIN*::
|
||||||
@ -93,7 +93,8 @@ associated 0MQ 'context' was terminated.
|
|||||||
*EFAULT*::
|
*EFAULT*::
|
||||||
The provided 'items' was not valid (NULL).
|
The provided 'items' was not valid (NULL).
|
||||||
*EINTR*::
|
*EINTR*::
|
||||||
The poll was interrupted by delivery of a signal before any event was available.
|
The operation was interrupted by delivery of a signal before any events were
|
||||||
|
available.
|
||||||
|
|
||||||
|
|
||||||
EXAMPLE
|
EXAMPLE
|
||||||
|
@ -171,13 +171,13 @@ Default value:: 10
|
|||||||
Applicable socket types:: all, when using multicast transports
|
Applicable socket types:: all, when using multicast transports
|
||||||
|
|
||||||
|
|
||||||
ZMQ_MCAST_LOOP: Control multicast loopback
|
ZMQ_MCAST_LOOP: Control multicast loop-back
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The 'ZMQ_MCAST_LOOP' option shall control whether data sent via multicast
|
The 'ZMQ_MCAST_LOOP' option shall control whether data sent via multicast
|
||||||
transports using the specified 'socket' can also be received by the sending
|
transports using the specified 'socket' can also be received by the sending
|
||||||
host via loopback. A value of zero disables the loopback functionality, while
|
host via loop-back. A value of zero disables the loop-back functionality, while
|
||||||
the default value of 1 enables the loopback functionality. Leaving multicast
|
the default value of 1 enables the loop-back functionality. Leaving multicast
|
||||||
loopback enabled when it is not required can have a negative impact on
|
loop-back enabled when it is not required can have a negative impact on
|
||||||
performance. Where possible, disable 'ZMQ_MCAST_LOOP' in production
|
performance. Where possible, disable 'ZMQ_MCAST_LOOP' in production
|
||||||
environments.
|
environments.
|
||||||
|
|
||||||
@ -218,44 +218,63 @@ Applicable socket types:: all
|
|||||||
|
|
||||||
ZMQ_LINGER: Set linger period for socket shutdown
|
ZMQ_LINGER: Set linger period for socket shutdown
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The 'ZMQ_LINGER' option shall be set to specify period for pending outbound
|
The 'ZMQ_LINGER' option shall set the linger period for the specified 'socket'.
|
||||||
messages to linger in memory after closing the socket. Value of -1 means
|
The linger period determines how long pending messages which have yet to be
|
||||||
infinite. Pending messages will be kept until they are fully transferred to
|
sent to a peer shall linger in memory after a socket is closed with
|
||||||
the peer. Value of 0 means that all the pending messages are dropped immediately
|
linkzmq:zmq_close[3], and further affects the termination of the socket's
|
||||||
when socket is closed. Positive value means number of milliseconds to keep
|
context with linkzmq:zmq_term[3]. The following outlines the different
|
||||||
trying to send the pending messages before discarding them.
|
behaviours:
|
||||||
|
|
||||||
|
* The default value of '-1' specifies an infinite linger period. Pending
|
||||||
|
messages shall not be discarded after a call to _zmq_close()_; attempting to
|
||||||
|
terminate the socket's context with _zmq_term()_ shall block until all
|
||||||
|
pending messages have been sent to a peer.
|
||||||
|
|
||||||
|
* The value of '0' specifies no linger period. Pending messages shall be
|
||||||
|
discarded immediately when the socket is closed with _zmq_close()_.
|
||||||
|
|
||||||
|
* Positive values specify an upper bound for the linger period in milliseconds.
|
||||||
|
Pending messages shall not be discarded after a call to _zmq_close()_;
|
||||||
|
attempting to terminate the socket's context with _zmq_term()_ shall block
|
||||||
|
until either all pending messages have been sent to a peer, or the linger
|
||||||
|
period expires, after which any pending messages shall be discarded.
|
||||||
|
|
||||||
[horizontal]
|
[horizontal]
|
||||||
Option value type:: int
|
Option value type:: int
|
||||||
Option value unit:: milliseconds
|
Option value unit:: milliseconds
|
||||||
Default value:: -1
|
Default value:: -1 (infinite)
|
||||||
Applicable socket types:: all
|
Applicable socket types:: all
|
||||||
|
|
||||||
|
|
||||||
ZMQ_RECONNECT_IVL: Set reconnect period for connection-based transports
|
ZMQ_RECONNECT_IVL: Set reconnection interval
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The 'ZMQ_RECONNECT_IVL' option shall be set to specify how long it takes for a
|
The 'ZMQ_RECONNECT_IVL' option shall set the reconnection interval for the
|
||||||
disconnected underlying connection to attempt to reconnect. The interval
|
specified 'socket'. The reconnection interval is the maximum period 0MQ shall
|
||||||
can be randomized to some extent by 0MQ to prevent reconnection storms.
|
wait between attempts to reconnect disconnected peers when using
|
||||||
|
connection-oriented transports.
|
||||||
|
|
||||||
|
NOTE: The reconnection interval may be randomized by 0MQ to prevent
|
||||||
|
reconnection storms in topologies with a large number of peers per socket.
|
||||||
|
|
||||||
[horizontal]
|
[horizontal]
|
||||||
Option value type:: int
|
Option value type:: int
|
||||||
Option value unit:: milliseconds
|
Option value unit:: milliseconds
|
||||||
Default value:: 100
|
Default value:: 100
|
||||||
Applicable socket types:: all
|
Applicable socket types:: all, only for connection-oriented transports
|
||||||
|
|
||||||
|
|
||||||
ZMQ_BACKLOG: Set maximum length of the queue of pending connections
|
ZMQ_BACKLOG: Set maximum length of the queue of outstanding connections
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The 'ZMQ_BACKLOG' option shall be set to specify maximum size of the
|
The 'ZMQ_BACKLOG' option shall set the maximum length of the queue of
|
||||||
pending connection backlog for connection-based transports. For details
|
outstanding peer connections for the specified 'socket'; this only applies to
|
||||||
refer to your operating system documentation for the 'listen' function.
|
connection-oriented transports. For details refer to your operating system
|
||||||
|
documentation for the 'listen' function.
|
||||||
|
|
||||||
[horizontal]
|
[horizontal]
|
||||||
Option value type:: int
|
Option value type:: int
|
||||||
Option value unit:: connections
|
Option value unit:: connections
|
||||||
Default value:: 100
|
Default value:: 100
|
||||||
Applicable socket types:: all
|
Applicable socket types:: all, only for connection-oriented transports.
|
||||||
|
|
||||||
|
|
||||||
RETURN VALUE
|
RETURN VALUE
|
||||||
|
@ -35,7 +35,7 @@ sockets transfer streams of bytes or discrete datagrams, 0MQ sockets transfer
|
|||||||
discrete _messages_.
|
discrete _messages_.
|
||||||
|
|
||||||
0MQ sockets being _asynchronous_ means that the timings of the physical
|
0MQ sockets being _asynchronous_ means that the timings of the physical
|
||||||
connection setup and teardown, reconnect and effective delivery are transparent
|
connection setup and tear down, reconnect and effective delivery are transparent
|
||||||
to the user and organized by 0MQ itself. Further, messages may be _queued_ in
|
to the user and organized by 0MQ itself. Further, messages may be _queued_ in
|
||||||
the event that a peer is unavailable to receive them.
|
the event that a peer is unavailable to receive them.
|
||||||
|
|
||||||
@ -46,6 +46,18 @@ relationships. With the exception of 'ZMQ_PAIR', 0MQ sockets may be connected
|
|||||||
incoming connections *from multiple endpoints* bound to the socket using
|
incoming connections *from multiple endpoints* bound to the socket using
|
||||||
_zmq_bind()_, thus allowing many-to-many relationships.
|
_zmq_bind()_, thus allowing many-to-many relationships.
|
||||||
|
|
||||||
|
.Thread safety
|
||||||
|
A 0MQ 'context' is thread safe and may be shared among as many application
|
||||||
|
threads as necessary, without any additional locking required on the part of
|
||||||
|
the caller.
|
||||||
|
|
||||||
|
Individual 0MQ 'sockets' are _not_ thread safe except in the case where full
|
||||||
|
memory barriers are issued when migrating a socket from one thread to another.
|
||||||
|
In practice this means applications can create a socket in one thread with
|
||||||
|
_zmq_socket()_ and then pass it to a _newly created_ thread as part of thread
|
||||||
|
initialization, for example via a structure passed as an argument to
|
||||||
|
_pthread_create()_.
|
||||||
|
|
||||||
.Socket types
|
.Socket types
|
||||||
The following sections present the socket types defined by 0MQ, grouped by the
|
The following sections present the socket types defined by 0MQ, grouped by the
|
||||||
general _messaging pattern_ which is built from related socket types.
|
general _messaging pattern_ which is built from related socket types.
|
||||||
@ -100,7 +112,7 @@ Compatible peer sockets:: 'ZMQ_REQ'
|
|||||||
Direction:: Bidirectional
|
Direction:: Bidirectional
|
||||||
Send/receive pattern:: Receive, Send, Receive, Send, ...
|
Send/receive pattern:: Receive, Send, Receive, Send, ...
|
||||||
Incoming routing strategy:: Fair-queued
|
Incoming routing strategy:: Fair-queued
|
||||||
Outgoing routing stratagy:: Last peer
|
Outgoing routing strategy:: Last peer
|
||||||
ZMQ_HWM option action:: Drop
|
ZMQ_HWM option action:: Drop
|
||||||
|
|
||||||
|
|
||||||
@ -166,13 +178,13 @@ ZMQ_HWM option action:: Drop
|
|||||||
Publish-subscribe pattern
|
Publish-subscribe pattern
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The publish-subscribe pattern is used for one-to-many distribution of data from
|
The publish-subscribe pattern is used for one-to-many distribution of data from
|
||||||
a single _publisher_ to multiple _subscribers_ in a fanout fashion.
|
a single _publisher_ to multiple _subscribers_ in a fan out fashion.
|
||||||
|
|
||||||
|
|
||||||
ZMQ_PUB
|
ZMQ_PUB
|
||||||
^^^^^^^
|
^^^^^^^
|
||||||
A socket of type 'ZMQ_PUB' is used by a _publisher_ to distribute data.
|
A socket of type 'ZMQ_PUB' is used by a _publisher_ to distribute data.
|
||||||
Messages sent are distributed in a fanout fashion to all connected peers.
|
Messages sent are distributed in a fan out fashion to all connected peers.
|
||||||
The linkzmq:zmq_recv[3] function is not implemented for this socket type.
|
The linkzmq:zmq_recv[3] function is not implemented for this socket type.
|
||||||
|
|
||||||
When a 'ZMQ_PUB' socket enters an exceptional state due to having reached the
|
When a 'ZMQ_PUB' socket enters an exceptional state due to having reached the
|
||||||
@ -186,7 +198,7 @@ Compatible peer sockets:: 'ZMQ_SUB'
|
|||||||
Direction:: Unidirectional
|
Direction:: Unidirectional
|
||||||
Send/receive pattern:: Send only
|
Send/receive pattern:: Send only
|
||||||
Incoming routing strategy:: N/A
|
Incoming routing strategy:: N/A
|
||||||
Outgoing routing strategy:: Fanout
|
Outgoing routing strategy:: Fan out
|
||||||
ZMQ_HWM option action:: Drop
|
ZMQ_HWM option action:: Drop
|
||||||
|
|
||||||
|
|
||||||
@ -301,8 +313,6 @@ ERRORS
|
|||||||
------
|
------
|
||||||
*EINVAL*::
|
*EINVAL*::
|
||||||
The requested socket 'type' is invalid.
|
The requested socket 'type' is invalid.
|
||||||
*EMTHREAD*::
|
|
||||||
The maximum number of sockets within this 'context' has been exceeded.
|
|
||||||
*EFAULT*::
|
*EFAULT*::
|
||||||
The provided 'context' was not valid (NULL).
|
The provided 'context' was not valid (NULL).
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ colon and the TCP port number to use.
|
|||||||
|
|
||||||
An 'interface' may be specified by either of the following:
|
An 'interface' may be specified by either of the following:
|
||||||
|
|
||||||
* The wildcard `*`, meaning all available interfaces.
|
* The wild-card `*`, meaning all available interfaces.
|
||||||
* The primary IPv4 address assigned to the interface, in its numeric
|
* The primary IPv4 address assigned to the interface, in its numeric
|
||||||
representation.
|
representation.
|
||||||
* The interface name as defined by the operating system.
|
* The interface name as defined by the operating system.
|
||||||
@ -127,10 +127,10 @@ EXAMPLES
|
|||||||
/* TCP port 5555 on all available interfaces */
|
/* TCP port 5555 on all available interfaces */
|
||||||
rc = zmq_bind(socket, "tcp://*:5555");
|
rc = zmq_bind(socket, "tcp://*:5555");
|
||||||
assert (rc == 0);
|
assert (rc == 0);
|
||||||
/* TCP port 5555 on the local loopback interface on all platforms */
|
/* TCP port 5555 on the local loop-back interface on all platforms */
|
||||||
rc = zmq_bind(socket, "tcp://127.0.0.1:5555");
|
rc = zmq_bind(socket, "tcp://127.0.0.1:5555");
|
||||||
assert (rc == 0);
|
assert (rc == 0);
|
||||||
/* TCP port 5555 on the first ethernet network interface on Linux */
|
/* TCP port 5555 on the first Ethernet network interface on Linux */
|
||||||
rc = zmq_bind(socket, "tcp://eth0:5555");
|
rc = zmq_bind(socket, "tcp://eth0:5555");
|
||||||
assert (rc == 0);
|
assert (rc == 0);
|
||||||
----
|
----
|
||||||
|
@ -14,20 +14,27 @@ SYNOPSIS
|
|||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
The _zmq_term()_ function terminates the 0MQ context 'context'.
|
The _zmq_term()_ function shall terminate the 0MQ context 'context'.
|
||||||
|
|
||||||
It does so in following steps:
|
Context termination is performed in the following steps:
|
||||||
|
|
||||||
* It causes any blocking operations currently in progress on sockets open within
|
1. Any blocking operations currently in progress on sockets open within
|
||||||
'context' to exit immediately with an error code of ETERM.
|
'context' shall return immediately with an error code of ETERM. With the
|
||||||
|
exception of _zmq_close()_, any further operations on sockets open within
|
||||||
|
'context' shall fail with an error code of ETERM.
|
||||||
|
|
||||||
* With the exception of _zmq_close()_, any further operations on sockets open
|
2. After interrupting all blocking calls, _zmq_term()_ shall _block_ until the
|
||||||
within 'context' shall fail with an error code of ETERM.
|
following conditions are satisfied:
|
||||||
|
+
|
||||||
|
* All sockets open within 'context' have been closed with _zmq_close()_.
|
||||||
|
|
||||||
* After iterrupting all blocking calls, _zmq_term()_ blocks until all sockets
|
* For each socket within 'context', all messages sent by the application
|
||||||
open within the context are closed using _zmq_close()_ and either all the
|
with _zmq_send()_ have either been physically transferred to a network
|
||||||
pending outbound messages are pushed to the network or ZMQ_LINGER period
|
peer, or the socket's linger period set with the _ZMQ_LINGER_ socket
|
||||||
expires for individual sockets.
|
option has expired.
|
||||||
|
|
||||||
|
For further details regarding socket linger behaviour refer to the _ZMQ_LINGER_
|
||||||
|
option in linkzmq:zmq_setsockopt[3].
|
||||||
|
|
||||||
|
|
||||||
RETURN VALUE
|
RETURN VALUE
|
||||||
|
@ -15,7 +15,7 @@ SYNOPSIS
|
|||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
The _zmq_version()_ function shall fill in the integer variables pointed to by
|
The _zmq_version()_ function shall fill in the integer variables pointed to by
|
||||||
the 'major', 'minor' and 'patch' arguments with the major, minor and patchlevel
|
the 'major', 'minor' and 'patch' arguments with the major, minor and patch level
|
||||||
components of the 0MQ library version.
|
components of the 0MQ library version.
|
||||||
|
|
||||||
This functionality is intended for applications or language bindings
|
This functionality is intended for applications or language bindings
|
||||||
|
Loading…
x
Reference in New Issue
Block a user