mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-13 18:55:10 +01:00
Merge pull request #3557 from bluca/docs
Clarify documentation for zmq_unbind/disconnect and new batch options
This commit is contained in:
commit
4a855fba8c
@ -25,27 +25,12 @@ associated with the endpoint will be discarded. However, if the socket's linger
|
||||
period is non-zero, libzmq will still attempt to transmit these discarded messages,
|
||||
until the linger period expires.
|
||||
|
||||
Addionally, if the disconnected endpoint was previously connected to
|
||||
(as opposed to bound), the incoming message queue associated with the
|
||||
endpoint will be discarded. This means that after unbinding an endpoint
|
||||
using `disconnect`, it is possible to received messages originating
|
||||
from that same endpoint if they were already present in the incoming message
|
||||
queue before unbinding. However, this is not the case when disconnecting
|
||||
from a connected endpoint.
|
||||
|
||||
The 'endpoint' argument is as described in linkzmq:zmq_connect[3]
|
||||
|
||||
NOTE: The default setting of _ZMQ_LINGER_ does not discard unsent messages;
|
||||
this behaviour may cause the application to block when calling _zmq_ctx_term()_.
|
||||
For details refer to linkzmq:zmq_setsockopt[3] and linkzmq:zmq_ctx_term[3].
|
||||
|
||||
Unbinding wild-card address from a socket
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
When a wild-card `*` 'endpoint' (described in linkzmq:zmq_tcp[7],
|
||||
linkzmq:zmq_ipc[7] and linkzmq:zmq_vmci[7]) was used in _zmq_bind()_, the caller
|
||||
should use the real 'endpoint' obtained from the ZMQ_LAST_ENDPOINT socket option
|
||||
to unbind this 'endpoint' from a socket.
|
||||
|
||||
RETURN VALUE
|
||||
------------
|
||||
The _zmq_disconnect()_ function shall return zero if successful. Otherwise it
|
||||
@ -78,37 +63,6 @@ rc = zmq_disconnect (socket, "tcp://server001:5555");
|
||||
assert (rc == 0);
|
||||
----
|
||||
|
||||
.Unbind a subscriber socket from a TCP transport
|
||||
----
|
||||
/* Create a ZMQ_SUB socket */
|
||||
void *socket = zmq_socket (context, ZMQ_SUB);
|
||||
assert (socket);
|
||||
/* Connect it to the host server001, port 5555 using a TCP transport */
|
||||
rc = zmq_bind (socket, "tcp://127.0.0.1:5555");
|
||||
assert (rc == 0);
|
||||
/* Disconnect from the previously connected endpoint */
|
||||
rc = zmq_disconnect(socket, "tcp://127.0.0.1:5555");
|
||||
assert (rc == 0);
|
||||
----
|
||||
|
||||
.Unbind wild-card `*` binded socket
|
||||
----
|
||||
/* Create a ZMQ_SUB socket */
|
||||
void *socket = zmq_socket (context, ZMQ_SUB);
|
||||
assert (socket);
|
||||
/* Bind it to the system-assigned ephemeral port using a TCP transport */
|
||||
rc = zmq_bind (socket, "tcp://127.0.0.1:*");
|
||||
assert (rc == 0);
|
||||
/* Obtain real endpoint */
|
||||
const size_t buf_size = 32;
|
||||
char buf[buf_size];
|
||||
rc = zmq_getsockopt (socket, ZMQ_LAST_ENDPOINT, buf, (size_t *)&buf_size);
|
||||
assert (rc == 0);
|
||||
/* Unbind socket by real endpoint */
|
||||
rc = zmq_disconnect (socket, buf);
|
||||
assert (rc == 0);
|
||||
----
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkzmq:zmq_connect[3]
|
||||
|
@ -924,9 +924,8 @@ Applicable socket types:: ZMQ_ROUTER
|
||||
|
||||
ZMQ_IN_BATCH_SIZE: Maximal receive batch size
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Sets the maximal amount of messages that can be received in a single
|
||||
'recv' system call. This can be used to improved throughtput at the expense of
|
||||
latency and vice-versa.
|
||||
Gets the maximal amount of messages that can be received in a single
|
||||
'recv' system call.
|
||||
|
||||
Cannot be zero.
|
||||
|
||||
@ -936,14 +935,13 @@ NOTE: in DRAFT state, not yet available in stable releases.
|
||||
Option value type:: int
|
||||
Option value unit:: messages
|
||||
Default value:: 8192
|
||||
Applicable socket types:: All
|
||||
Applicable socket types:: All, when using TCP, IPC, PGM or NORM transport.
|
||||
|
||||
|
||||
ZMQ_OUT_BATCH_SIZE: Maximal send batch size
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Sets the maximal amount of messages that can be sent in a single
|
||||
'send' system call. This can be used to improved throughtput at the expense of
|
||||
latency and vice-versa.
|
||||
Gets the maximal amount of messages that can be sent in a single
|
||||
'send' system call.
|
||||
|
||||
Cannot be zero.
|
||||
|
||||
@ -953,7 +951,7 @@ NOTE: in DRAFT state, not yet available in stable releases.
|
||||
Option value type:: int
|
||||
Option value unit:: messages
|
||||
Default value:: 8192
|
||||
Applicable socket types:: All
|
||||
Applicable socket types:: All, when using TCP, IPC, PGM or NORM transport.
|
||||
|
||||
|
||||
|
||||
|
@ -1363,10 +1363,12 @@ Applicable socket types:: ZMQ_ROUTER
|
||||
|
||||
|
||||
ZMQ_IN_BATCH_SIZE: Maximal receive batch size
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Sets the maximal amount of messages that can be received in a single
|
||||
'recv' system call. This can be used to improved throughtput at the expense of
|
||||
latency and vice-versa.
|
||||
'recv' system call. WARNING: this option should almost never be changed.
|
||||
The default has been chosen to offer the best compromise between latency and
|
||||
throughtput. In the vast majority of cases, changing this option will result in
|
||||
worst result if not outright breakages.
|
||||
|
||||
Cannot be zero.
|
||||
|
||||
@ -1376,14 +1378,16 @@ NOTE: in DRAFT state, not yet available in stable releases.
|
||||
Option value type:: int
|
||||
Option value unit:: messages
|
||||
Default value:: 8192
|
||||
Applicable socket types:: All
|
||||
Applicable socket types:: All, when using TCP, IPC, PGM or NORM transport.
|
||||
|
||||
|
||||
ZMQ_OUT_BATCH_SIZE: Maximal send batch size
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Sets the maximal amount of messages that can be sent in a single
|
||||
'send' system call. This can be used to improved throughtput at the expense of
|
||||
latency and vice-versa.
|
||||
'send' system call. WARNING: this option should almost never be changed.
|
||||
The default has been chosen to offer the best compromise between latency and
|
||||
throughtput. In the vast majority of cases, changing this option will result in
|
||||
worst result if not outright breakages.
|
||||
|
||||
Cannot be zero.
|
||||
|
||||
@ -1393,7 +1397,7 @@ NOTE: in DRAFT state, not yet available in stable releases.
|
||||
Option value type:: int
|
||||
Option value unit:: messages
|
||||
Default value:: 8192
|
||||
Applicable socket types:: All
|
||||
Applicable socket types:: All, when using TCP, IPC, PGM or NORM transport.
|
||||
|
||||
|
||||
RETURN VALUE
|
||||
|
@ -4,7 +4,7 @@ zmq_unbind(3)
|
||||
|
||||
NAME
|
||||
----
|
||||
zmq_unbind - Another name for zmq_disconnect
|
||||
zmq_unbind - Stop accepting connections on a socket
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
@ -14,8 +14,81 @@ int zmq_unbind (void '*socket', const char '*endpoint');
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
The _zmq_unbind()_ has the same exact behavior as _zmq_disconnect()_.
|
||||
Refer to linkzmq:zmq_disconnect[3].
|
||||
The _zmq_unbind()_ function shall unbind a socket specified
|
||||
by the 'socket' argument from the endpoint specified by the 'endpoint'
|
||||
argument.
|
||||
|
||||
Addionally the incoming message queue associated with the endpoint will be
|
||||
discarded. This means that after unbinding an endpoint it is possible to
|
||||
received messages originating from that same endpoint if they were already
|
||||
present in the incoming message queue before unbinding.
|
||||
|
||||
The 'endpoint' argument is as described in linkzmq:zmq_bind[3]
|
||||
|
||||
Unbinding wild-card address from a socket
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
When wild-card `*` 'endpoint' (described in linkzmq:zmq_tcp[7],
|
||||
linkzmq:zmq_ipc[7] and linkzmq:zmq_vmci[7]) was used in _zmq_bind()_, the caller should use
|
||||
real 'endpoint' obtained from the ZMQ_LAST_ENDPOINT socket option
|
||||
to unbind this 'endpoint' from a socket.
|
||||
|
||||
RETURN VALUE
|
||||
------------
|
||||
The _zmq_unbind()_ function shall return zero if successful. Otherwise it
|
||||
shall return `-1` and set 'errno' to one of the values defined below.
|
||||
|
||||
ERRORS
|
||||
------
|
||||
*EINVAL*::
|
||||
The endpoint supplied is invalid.
|
||||
*ETERM*::
|
||||
The 0MQ 'context' associated with the specified 'socket' was terminated.
|
||||
*ENOTSOCK*::
|
||||
The provided 'socket' was invalid.
|
||||
*ENOENT*::
|
||||
The endpoint supplied was not previously bound.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
.Unbind a subscriber socket from a TCP transport
|
||||
----
|
||||
/* Create a ZMQ_SUB socket */
|
||||
void *socket = zmq_socket (context, ZMQ_SUB);
|
||||
assert (socket);
|
||||
/* Connect it to the host server001, port 5555 using a TCP transport */
|
||||
rc = zmq_bind (socket, "tcp://127.0.0.1:5555");
|
||||
assert (rc == 0);
|
||||
/* Disconnect from the previously connected endpoint */
|
||||
rc = zmq_unbind (socket, "tcp://127.0.0.1:5555");
|
||||
assert (rc == 0);
|
||||
----
|
||||
|
||||
.Unbind wild-card `*` binded socket
|
||||
----
|
||||
/* Create a ZMQ_SUB socket */
|
||||
void *socket = zmq_socket (context, ZMQ_SUB);
|
||||
assert (socket);
|
||||
/* Bind it to the system-assigned ephemeral port using a TCP transport */
|
||||
rc = zmq_bind (socket, "tcp://127.0.0.1:*");
|
||||
assert (rc == 0);
|
||||
/* Obtain real endpoint */
|
||||
const size_t buf_size = 32;
|
||||
char buf[buf_size];
|
||||
rc = zmq_getsockopt (socket, ZMQ_LAST_ENDPOINT, buf, (size_t *)&buf_size);
|
||||
assert (rc == 0);
|
||||
/* Unbind socket by real endpoint */
|
||||
rc = zmq_unbind (socket, buf);
|
||||
assert (rc == 0);
|
||||
----
|
||||
|
||||
NOTE
|
||||
----
|
||||
|
||||
Note that while the implementation is similar to _zmq_disconnect()_, the
|
||||
semantics are different and the two functions should not be used
|
||||
interchangeably. Bound sockets should be unbound, and connected sockets should
|
||||
be disconnected.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
|
Loading…
Reference in New Issue
Block a user