mirror of
https://github.com/zeromq/libzmq.git
synced 2025-08-12 13:38:17 +02:00
Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
c0c8ce5508 | ||
![]() |
66b1bc6d7f | ||
![]() |
f5ecc826d9 | ||
![]() |
a31fe9565a | ||
![]() |
2f4905500d | ||
![]() |
c10a3ec526 | ||
![]() |
e0676a2b26 | ||
![]() |
b411a3561d | ||
![]() |
4ce9b42405 | ||
![]() |
fef4fa8fc5 | ||
![]() |
4298f71cbf |
6
.gitignore
vendored
6
.gitignore
vendored
@ -43,7 +43,7 @@ tests/test_invalid_rep
|
|||||||
tests/test_msg_flags
|
tests/test_msg_flags
|
||||||
tests/test_ts_context
|
tests/test_ts_context
|
||||||
tests/test_connect_resolve
|
tests/test_connect_resolve
|
||||||
tests/test_connect_delay
|
tests/test_immediate
|
||||||
tests/test_term_endpoint
|
tests/test_term_endpoint
|
||||||
tests/test_router_mandatory
|
tests/test_router_mandatory
|
||||||
tests/test_disconnect_inproc
|
tests/test_disconnect_inproc
|
||||||
@ -60,8 +60,8 @@ tests/test_spec_pushpull
|
|||||||
tests/test_spec_rep
|
tests/test_spec_rep
|
||||||
tests/test_spec_req
|
tests/test_spec_req
|
||||||
tests/test_spec_router
|
tests/test_spec_router
|
||||||
tests/test_req_request_ids
|
tests/test_req_correlate
|
||||||
tests/test_req_strict
|
tests/test_req_relaxed
|
||||||
tests/test_fork
|
tests/test_fork
|
||||||
tests/test_conflate
|
tests/test_conflate
|
||||||
tests/test_inproc_connect
|
tests/test_inproc_connect
|
||||||
|
@ -579,7 +579,7 @@ endif()
|
|||||||
enable_testing()
|
enable_testing()
|
||||||
set(tests
|
set(tests
|
||||||
test_system
|
test_system
|
||||||
test_connect_delay
|
test_immediate
|
||||||
test_connect_resolve
|
test_connect_resolve
|
||||||
test_ctx_destroy
|
test_ctx_destroy
|
||||||
test_ctx_options
|
test_ctx_options
|
||||||
@ -592,8 +592,8 @@ set(tests
|
|||||||
test_pair_inproc
|
test_pair_inproc
|
||||||
test_pair_tcp
|
test_pair_tcp
|
||||||
test_probe_router
|
test_probe_router
|
||||||
test_req_request_ids
|
test_req_correlate
|
||||||
test_req_strict
|
test_req_relaxed
|
||||||
test_reqrep_device
|
test_reqrep_device
|
||||||
test_reqrep_inproc
|
test_reqrep_inproc
|
||||||
test_reqrep_tcp
|
test_reqrep_tcp
|
||||||
|
144
NEWS
144
NEWS
@ -1,3 +1,145 @@
|
|||||||
|
0MQ version 4.0.0 (RC1), released on 2013/09/20
|
||||||
|
===============================================
|
||||||
|
|
||||||
|
Major changes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
* New wire level protocol, ZMTP/3.0, see http://rfc.zeromq.org/spec:23.
|
||||||
|
Does not yet implement the SUBSCRIBE, CANCEL, PING, and PONG commands.
|
||||||
|
|
||||||
|
* New security framework, from plain user+password to strong encryption,
|
||||||
|
see section below. See http://hintjens.com/blog:49 for a tutorial.
|
||||||
|
|
||||||
|
* New ZMQ_STREAM socket type for working as a TCP client or server. See:
|
||||||
|
tests/test_stream.cpp.
|
||||||
|
|
||||||
|
Improvements
|
||||||
|
------------
|
||||||
|
|
||||||
|
* You can now connect to an inproc:// endpoint that does not already
|
||||||
|
exist. This means inproc:// no longer needs careful set-up, but it may
|
||||||
|
break code that relied on the old behaviour. See:
|
||||||
|
tests/test_inproc_connect.cpp.
|
||||||
|
|
||||||
|
* Libzmq now checks socket types at connection time, so that trying to
|
||||||
|
connect a 'wrong' socket type will fail.
|
||||||
|
|
||||||
|
* New zmq_ctx_shutdown API method will shutdown a context and send ETERM
|
||||||
|
to blocking calls, without blocking. Use zmq_ctx_term to finalise the
|
||||||
|
process.
|
||||||
|
|
||||||
|
* The regression test suite has been significantly extended and improved.
|
||||||
|
|
||||||
|
* Contexts can now be terminated in forked child processes. See:
|
||||||
|
tests/test_fork.cpp.
|
||||||
|
|
||||||
|
* zmq_disconnect now respects the linger setting on sockets.
|
||||||
|
|
||||||
|
* New zmq_send_const API method to send constant data (without copying).
|
||||||
|
See: tests/test_inproc_connect.cpp.
|
||||||
|
|
||||||
|
* Added CMake support for static libraries.
|
||||||
|
|
||||||
|
* Added test cases for socket semantics as defined in RFCs 28, 29, 30, 31.
|
||||||
|
See: tests/test_spec_*.cpp.
|
||||||
|
|
||||||
|
* New socket option, ZMQ_PROBE_ROUTER triggers an empty message on connect.
|
||||||
|
See: tests/test_probe_router.cpp.
|
||||||
|
|
||||||
|
* New socket option, ZMQ_REQ_CORRELATE allows for correlation of replies
|
||||||
|
from a REP socket. See: tests/test_req_correlate.cpp.
|
||||||
|
|
||||||
|
* New socket option, ZMQ_REQ_RELAXED, lets you disable the state machine
|
||||||
|
on a REQ socket, so you can send multiple requests without waiting for
|
||||||
|
replies, and without getting an EFSM error. See:
|
||||||
|
tests/test_req_relaxed.cpp.
|
||||||
|
|
||||||
|
* New socket option, ZMQ_CONFLATE restricts the outgoing and incoming
|
||||||
|
socket buffers to a single message. See: tests/test_conflate.cpp.
|
||||||
|
|
||||||
|
Deprecated Options
|
||||||
|
------------------
|
||||||
|
|
||||||
|
* ZMQ_IPV4ONLY deprecated and renamed to ZMQ_IPV6 so that options are
|
||||||
|
consistently "off" by default.
|
||||||
|
|
||||||
|
* ZMQ_DELAY_ATTACH_ON_CONNECT deprecated, and renamed to ZMQ_IMMEDIATE.
|
||||||
|
See: tests/test_immediate.cpp.
|
||||||
|
|
||||||
|
Security Framework
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Based on new ZMTP wire level protocol that negotiates a security
|
||||||
|
"mechanism" between client and server before exchanging any other data.
|
||||||
|
|
||||||
|
Security mechanisms are extensible. ZMTP defines three by default:
|
||||||
|
|
||||||
|
* NULL - classic ZeroMQ, with no authentication. See
|
||||||
|
http://rfc.zeromq.org/spec:23.
|
||||||
|
|
||||||
|
* PLAIN - plain-text username + password authentication. See
|
||||||
|
http://rfc.zeromq.org/spec:24.
|
||||||
|
|
||||||
|
* CURVE - secure authentication and encryption based on elliptic curve
|
||||||
|
cryptography, using the Curve25519 algorithm from Daniel Bernstein and
|
||||||
|
based on CurveCP's security handshake. See http://rfc.zeromq.org/spec:25,
|
||||||
|
http://rfc.zeromq.org/spec:26, and http://curvecp.org.
|
||||||
|
|
||||||
|
Authentication is done by pluggable "authenticators" that connect to libzmq
|
||||||
|
over an inproc endpoint, see http://rfc.zeromq.org/spec:27.
|
||||||
|
|
||||||
|
Socket options to configure PLAIN security on client or server:
|
||||||
|
|
||||||
|
* ZMQ_PLAIN_SERVER, ZMQ_PLAIN_USERNAME, ZMQ_PLAIN_PASSWORD. See
|
||||||
|
tests/test_security_plain.
|
||||||
|
|
||||||
|
Socket options to configure CURVE security on client or server:
|
||||||
|
|
||||||
|
* ZMQ_CURVE_SERVER, ZMQ_CURVE_PUBLICKEY, ZMQ_CURVE_SECRETKEY,
|
||||||
|
ZMQ_CURVE_SERVERKEY. See tests/test_security_curve.cpp.
|
||||||
|
|
||||||
|
Socket options to configure "domain" for ZAP handler:
|
||||||
|
|
||||||
|
* ZMQ_ZAP_DOMAIN, see tests/test_security_null.cpp.
|
||||||
|
|
||||||
|
Support for encoding/decoding CURVE binary keys to ASCII:
|
||||||
|
|
||||||
|
* zmq_z85_encode, zmq_z85_decode.
|
||||||
|
|
||||||
|
Other issues addressed in this release
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
* LIBZMQ-525 Multipart upstreaming from XSUB to XPUB
|
||||||
|
|
||||||
|
|
||||||
|
0MQ version 3.2.4 stable, released on 2013/09/20
|
||||||
|
================================================
|
||||||
|
|
||||||
|
* LIBZMQ-84 (Windows) Assertion failed: Address already in use at signaler.cpp:80
|
||||||
|
* LIBZMQ-456 ZMQ_XPUB_VERBOSE does not propagate in a tree of XPUB/XSUB devices
|
||||||
|
* LIBZMQ-532 (Windows) critical section not released on error
|
||||||
|
* LIBZMQ-569 Detect OpenPGM 5.2 system library
|
||||||
|
* LIBZMQ-563 Subscribers sometimes stopped receiving messages (aka LIBZMQ-541)
|
||||||
|
* LIBZMQ-XXX Added support for Travis Continuous Integration
|
||||||
|
* LIBZMQ-XXX Several improvements to MSVC support
|
||||||
|
|
||||||
|
|
||||||
|
0MQ version 3.2.3 stable, released on 2013/05/02
|
||||||
|
================================================
|
||||||
|
|
||||||
|
Issues addressed in this release
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
* LIBZMQ-526 Assertion failure "Invalid argument (tcp_connecter.cpp:285)"
|
||||||
|
* LIBZMQ-446 Setting the DSCP bits by default causes CAP_NET_ADMIN error
|
||||||
|
* LIBZMQ-496 Crash on heavy socket opening/closing: Device or resource busy (mutex.hpp:90)
|
||||||
|
* LIBZMQ-462 test_connect_delay fails at test_connect_delay.cpp:80
|
||||||
|
* LIBZMQ-497 Messages getting dropped
|
||||||
|
* LIBZMQ-488 signaler.cpp leaks the win32 Event Handle
|
||||||
|
* LIBZMQ-476 zmq_disconnect has no effect for inproc sockets
|
||||||
|
* LIBZMQ-475 zmq_disconnect does not sent unsubscribe messages
|
||||||
|
|
||||||
|
|
||||||
0MQ version 3.2.2 stable, released on 2012/11/23
|
0MQ version 3.2.2 stable, released on 2012/11/23
|
||||||
================================================
|
================================================
|
||||||
|
|
||||||
@ -13,7 +155,6 @@ Issues addressed in this release
|
|||||||
* LIBZMQ-450 lt-test_monitor: fails with assertion at test_monitor.cpp:81
|
* LIBZMQ-450 lt-test_monitor: fails with assertion at test_monitor.cpp:81
|
||||||
* LIBZMQ-451 ZMQ_ROUTER_MANDATORY blocks forever
|
* LIBZMQ-451 ZMQ_ROUTER_MANDATORY blocks forever
|
||||||
* LIBZMQ-452 test_connect_delay.cpp:175:12: error: 'sleep' was not declared in this scope
|
* LIBZMQ-452 test_connect_delay.cpp:175:12: error: 'sleep' was not declared in this scope
|
||||||
* LIBZMQ-456 ZMQ_XPUB_VERBOSE does not propagate in a tree of XPUB/XSUB devices
|
|
||||||
* LIBZMQ-458 lt-test_router_mandatory fails with assertion at test_router_mandatory.cpp:53
|
* LIBZMQ-458 lt-test_router_mandatory fails with assertion at test_router_mandatory.cpp:53
|
||||||
* LIBZMQ-459 Assertion failed: encoder (stream_engine.cpp:266
|
* LIBZMQ-459 Assertion failed: encoder (stream_engine.cpp:266
|
||||||
* LIBZMQ-464 PUB socket with HWM set leaks memory
|
* LIBZMQ-464 PUB socket with HWM set leaks memory
|
||||||
@ -21,6 +162,7 @@ Issues addressed in this release
|
|||||||
* LIBZMQ-468 ZMQ_XPUB_VERBOSE & unsubscribe
|
* LIBZMQ-468 ZMQ_XPUB_VERBOSE & unsubscribe
|
||||||
* LIBZMQ-472 Segfault in zmq_poll in REQ to ROUTER dialog
|
* LIBZMQ-472 Segfault in zmq_poll in REQ to ROUTER dialog
|
||||||
|
|
||||||
|
|
||||||
0MQ version 3.2.1 (RC2), released on 2012/10/15
|
0MQ version 3.2.1 (RC2), released on 2012/10/15
|
||||||
===============================================
|
===============================================
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ MAN3 = zmq_bind.3 zmq_unbind.3 zmq_connect.3 zmq_disconnect.3 zmq_close.3 \
|
|||||||
zmq_msg_init.3 zmq_msg_init_data.3 zmq_msg_init_size.3 \
|
zmq_msg_init.3 zmq_msg_init_data.3 zmq_msg_init_size.3 \
|
||||||
zmq_msg_move.3 zmq_msg_copy.3 zmq_msg_size.3 zmq_msg_data.3 zmq_msg_close.3 \
|
zmq_msg_move.3 zmq_msg_copy.3 zmq_msg_size.3 zmq_msg_data.3 zmq_msg_close.3 \
|
||||||
zmq_msg_send.3 zmq_msg_recv.3 \
|
zmq_msg_send.3 zmq_msg_recv.3 \
|
||||||
zmq_send.3 zmq_recv.3 \
|
zmq_send.3 zmq_recv.3 zmq_send_const.3 \
|
||||||
zmq_msg_get.3 zmq_msg_set.3 zmq_msg_more.3 \
|
zmq_msg_get.3 zmq_msg_set.3 zmq_msg_more.3 \
|
||||||
zmq_getsockopt.3 zmq_setsockopt.3 \
|
zmq_getsockopt.3 zmq_setsockopt.3 \
|
||||||
zmq_socket.3 zmq_socket_monitor.3 zmq_poll.3 \
|
zmq_socket.3 zmq_socket_monitor.3 zmq_poll.3 \
|
||||||
|
@ -140,6 +140,7 @@ Sending and receiving messages::
|
|||||||
linkzmq:zmq_msg_recv[3]
|
linkzmq:zmq_msg_recv[3]
|
||||||
linkzmq:zmq_send[3]
|
linkzmq:zmq_send[3]
|
||||||
linkzmq:zmq_recv[3]
|
linkzmq:zmq_recv[3]
|
||||||
|
linkzmq:zmq_send_const[3]
|
||||||
|
|
||||||
.Input/output multiplexing
|
.Input/output multiplexing
|
||||||
0MQ provides a mechanism for applications to multiplex input/output events over
|
0MQ provides a mechanism for applications to multiplex input/output events over
|
||||||
|
@ -352,8 +352,8 @@ Default value:: 1 (true)
|
|||||||
Applicable socket types:: all, when using TCP transports.
|
Applicable socket types:: all, when using TCP transports.
|
||||||
|
|
||||||
|
|
||||||
ZMQ_DELAY_ATTACH_ON_CONNECT: Retrieve attach-on-connect value
|
ZMQ_IMMEDIATE: Retrieve attach-on-connect value
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
Retrieve the state of the attach on connect value. If set to `1`, will delay the
|
Retrieve the state of the attach on connect value. If set to `1`, will delay the
|
||||||
attachment of a pipe on connect until the underlying connection has completed.
|
attachment of a pipe on connect until the underlying connection has completed.
|
||||||
This will cause the socket to block if there are no other connections, but will
|
This will cause the socket to block if there are no other connections, but will
|
||||||
|
@ -73,10 +73,6 @@ NOTE: The _zmq_poll()_ function may be implemented or emulated using operating
|
|||||||
system interfaces other than _poll()_, and as such may be subject to the limits
|
system interfaces other than _poll()_, and as such may be subject to the limits
|
||||||
of those interfaces in ways not defined in this documentation.
|
of those interfaces in ways not defined in this documentation.
|
||||||
|
|
||||||
NOTE: The _zmq_send()_ function will clear all pending events on a socket. Thus,
|
|
||||||
if you use _zmq_poll()_ to monitor input on a socket, use it before output as
|
|
||||||
well, and process all events after each _zmq_poll()_ call.
|
|
||||||
|
|
||||||
RETURN VALUE
|
RETURN VALUE
|
||||||
------------
|
------------
|
||||||
Upon successful completion, the _zmq_poll()_ function shall return the number
|
Upon successful completion, the _zmq_poll()_ function shall return the number
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
zmq_send_const(3)
|
zmq_send_const(3)
|
||||||
===========
|
=================
|
||||||
|
|
||||||
|
|
||||||
NAME
|
NAME
|
||||||
|
@ -14,7 +14,7 @@ SYNOPSIS
|
|||||||
|
|
||||||
Caution: All options, with the exception of ZMQ_SUBSCRIBE, ZMQ_UNSUBSCRIBE,
|
Caution: All options, with the exception of ZMQ_SUBSCRIBE, ZMQ_UNSUBSCRIBE,
|
||||||
ZMQ_LINGER, ZMQ_ROUTER_MANDATORY, ZMQ_PROBE_ROUTER, ZMQ_XPUB_VERBOSE,
|
ZMQ_LINGER, ZMQ_ROUTER_MANDATORY, ZMQ_PROBE_ROUTER, ZMQ_XPUB_VERBOSE,
|
||||||
ZMQ_REQ_STRICT, ZMQ_REQ_REQUEST_IDS only take effect for subsequent socket
|
ZMQ_REQ_CORRELATE, and ZMQ_REQ_RELAXED, only take effect for subsequent socket
|
||||||
bind/connects.
|
bind/connects.
|
||||||
|
|
||||||
Specifically, security options take effect for subsequent bind/connect calls,
|
Specifically, security options take effect for subsequent bind/connect calls,
|
||||||
@ -461,11 +461,11 @@ Default value:: 0
|
|||||||
Applicable socket types:: ZMQ_XPUB
|
Applicable socket types:: ZMQ_XPUB
|
||||||
|
|
||||||
|
|
||||||
ZMQ_REQ_REQUEST_IDS: enable extra request identity frames
|
ZMQ_REQ_CORRELATE: match replies with requests
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
The default behavior of REQ sockets is to rely on the ordering of messages
|
The default behavior of REQ sockets is to rely on the ordering of messages to
|
||||||
to match requests and responses and that is usually sufficient. When this option
|
match requests and responses and that is usually sufficient. When this option
|
||||||
is set to 1, the REQ socket will prefix outgoing messages with an extra frame
|
is set to 1, the REQ socket will prefix outgoing messages with an extra frame
|
||||||
containing a request id. That means the full message is (request id, 0,
|
containing a request id. That means the full message is (request id, 0,
|
||||||
user frames...). The REQ socket will discard all incoming messages that don't
|
user frames...). The REQ socket will discard all incoming messages that don't
|
||||||
@ -478,25 +478,25 @@ Default value:: 0
|
|||||||
Applicable socket types:: ZMQ_REQ
|
Applicable socket types:: ZMQ_REQ
|
||||||
|
|
||||||
|
|
||||||
ZMQ_REQ_STRICT: enforce strict alternation between request and reply
|
ZMQ_REQ_RELAXED: relax strict alternation between request and reply
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
When set to 1, a REQ socket does not allow initiating a new request with
|
By default, a REQ socket does not allow initiating a new request with
|
||||||
_zmq_send(3)_ until the reply to the previous one has been received.
|
_zmq_send(3)_ until the reply to the previous one has been received.
|
||||||
When set to 0, sending another message is allowed and has the effect of
|
When set to 1, sending another message is allowed and has the effect of
|
||||||
disconnecting the underlying connection to the peer from which the reply was
|
disconnecting the underlying connection to the peer from which the reply was
|
||||||
expected, triggering a reconnection attempt on transports that support it.
|
expected, triggering a reconnection attempt on transports that support it.
|
||||||
The request-reply state machine is reset and a new request is sent to the
|
The request-reply state machine is reset and a new request is sent to the
|
||||||
next available peer.
|
next available peer.
|
||||||
|
|
||||||
If set to 0, also enable ZMQ_REQ_REQUEST_IDS to ensure correct
|
If set to 1, also enable ZMQ_REQ_CORRELATE to ensure correct matching of
|
||||||
matching of requests and replies. Otherwise a late reply to an aborted request
|
requests and replies. Otherwise a late reply to an aborted request can be
|
||||||
can be reported as the reply to the superseding request.
|
reported as the reply to the superseding request.
|
||||||
|
|
||||||
[horizontal]
|
[horizontal]
|
||||||
Option value type:: int
|
Option value type:: int
|
||||||
Option value unit:: 0, 1
|
Option value unit:: 0, 1
|
||||||
Default value:: 1
|
Default value:: 0
|
||||||
Applicable socket types:: ZMQ_REQ
|
Applicable socket types:: ZMQ_REQ
|
||||||
|
|
||||||
|
|
||||||
|
@ -72,8 +72,8 @@ typedef unsigned __int16 uint16_t;
|
|||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
/* Version macros for compile-time API version detection */
|
/* Version macros for compile-time API version detection */
|
||||||
#define ZMQ_VERSION_MAJOR 3
|
#define ZMQ_VERSION_MAJOR 4
|
||||||
#define ZMQ_VERSION_MINOR 3
|
#define ZMQ_VERSION_MINOR 0
|
||||||
#define ZMQ_VERSION_PATCH 0
|
#define ZMQ_VERSION_PATCH 0
|
||||||
|
|
||||||
#define ZMQ_MAKE_VERSION(major, minor, patch) \
|
#define ZMQ_MAKE_VERSION(major, minor, patch) \
|
||||||
@ -277,8 +277,8 @@ ZMQ_EXPORT int zmq_msg_set (zmq_msg_t *msg, int option, int optval);
|
|||||||
#define ZMQ_CURVE_SECRETKEY 49
|
#define ZMQ_CURVE_SECRETKEY 49
|
||||||
#define ZMQ_CURVE_SERVERKEY 50
|
#define ZMQ_CURVE_SERVERKEY 50
|
||||||
#define ZMQ_PROBE_ROUTER 51
|
#define ZMQ_PROBE_ROUTER 51
|
||||||
#define ZMQ_REQ_REQUEST_IDS 52
|
#define ZMQ_REQ_CORRELATE 52
|
||||||
#define ZMQ_REQ_STRICT 53
|
#define ZMQ_REQ_RELAXED 53
|
||||||
#define ZMQ_CONFLATE 54
|
#define ZMQ_CONFLATE 54
|
||||||
#define ZMQ_ZAP_DOMAIN 55
|
#define ZMQ_ZAP_DOMAIN 55
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ libzmq_la_SOURCES = \
|
|||||||
dealer.hpp \
|
dealer.hpp \
|
||||||
xsub.hpp \
|
xsub.hpp \
|
||||||
ypipe.hpp \
|
ypipe.hpp \
|
||||||
ypipe_flat.hpp \
|
ypipe_base.hpp \
|
||||||
yqueue.hpp \
|
yqueue.hpp \
|
||||||
address.cpp \
|
address.cpp \
|
||||||
clock.cpp \
|
clock.cpp \
|
||||||
|
@ -198,16 +198,16 @@ int zmq::req_t::xsetsockopt (int option_, const void *optval_, size_t optvallen_
|
|||||||
bool is_int = (optvallen_ == sizeof (int));
|
bool is_int = (optvallen_ == sizeof (int));
|
||||||
int value = is_int? *((int *) optval_): 0;
|
int value = is_int? *((int *) optval_): 0;
|
||||||
switch (option_) {
|
switch (option_) {
|
||||||
case ZMQ_REQ_REQUEST_IDS:
|
case ZMQ_REQ_CORRELATE:
|
||||||
if (is_int && value >= 0) {
|
if (is_int && value >= 0) {
|
||||||
request_id_frames_enabled = (value != 0);
|
request_id_frames_enabled = (value != 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ZMQ_REQ_STRICT:
|
case ZMQ_REQ_RELAXED:
|
||||||
if (is_int && value >= 0) {
|
if (is_int && value >= 0) {
|
||||||
strict = (value != 0);
|
strict = (value == 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -14,7 +14,7 @@ noinst_PROGRAMS = test_system \
|
|||||||
test_invalid_rep \
|
test_invalid_rep \
|
||||||
test_msg_flags \
|
test_msg_flags \
|
||||||
test_connect_resolve \
|
test_connect_resolve \
|
||||||
test_connect_delay \
|
test_immediate \
|
||||||
test_last_endpoint \
|
test_last_endpoint \
|
||||||
test_term_endpoint \
|
test_term_endpoint \
|
||||||
test_linger \
|
test_linger \
|
||||||
@ -34,8 +34,8 @@ noinst_PROGRAMS = test_system \
|
|||||||
test_spec_dealer \
|
test_spec_dealer \
|
||||||
test_spec_router \
|
test_spec_router \
|
||||||
test_spec_pushpull \
|
test_spec_pushpull \
|
||||||
test_req_request_ids \
|
test_req_correlate \
|
||||||
test_req_strict \
|
test_req_relaxed \
|
||||||
test_conflate \
|
test_conflate \
|
||||||
test_inproc_connect
|
test_inproc_connect
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ test_invalid_rep_SOURCES = test_invalid_rep.cpp
|
|||||||
test_linger_SOURCES = test_linger.cpp
|
test_linger_SOURCES = test_linger.cpp
|
||||||
test_msg_flags_SOURCES = test_msg_flags.cpp
|
test_msg_flags_SOURCES = test_msg_flags.cpp
|
||||||
test_connect_resolve_SOURCES = test_connect_resolve.cpp
|
test_connect_resolve_SOURCES = test_connect_resolve.cpp
|
||||||
test_connect_delay_SOURCES = test_connect_delay.cpp
|
test_immediate_SOURCES = test_immediate.cpp
|
||||||
test_last_endpoint_SOURCES = test_last_endpoint.cpp
|
test_last_endpoint_SOURCES = test_last_endpoint.cpp
|
||||||
test_term_endpoint_SOURCES = test_term_endpoint.cpp
|
test_term_endpoint_SOURCES = test_term_endpoint.cpp
|
||||||
test_monitor_SOURCES = test_monitor.cpp
|
test_monitor_SOURCES = test_monitor.cpp
|
||||||
@ -78,8 +78,8 @@ test_spec_rep_SOURCES = test_spec_rep.cpp
|
|||||||
test_spec_dealer_SOURCES = test_spec_dealer.cpp
|
test_spec_dealer_SOURCES = test_spec_dealer.cpp
|
||||||
test_spec_router_SOURCES = test_spec_router.cpp
|
test_spec_router_SOURCES = test_spec_router.cpp
|
||||||
test_spec_pushpull_SOURCES = test_spec_pushpull.cpp
|
test_spec_pushpull_SOURCES = test_spec_pushpull.cpp
|
||||||
test_req_request_ids_SOURCES = test_req_request_ids.cpp
|
test_req_correlate_SOURCES = test_req_correlate.cpp
|
||||||
test_req_strict_SOURCES = test_req_strict.cpp
|
test_req_relaxed_SOURCES = test_req_relaxed.cpp
|
||||||
test_conflate_SOURCES = test_conflate.cpp
|
test_conflate_SOURCES = test_conflate.cpp
|
||||||
test_inproc_connect_SOURCES = test_inproc_connect.cpp
|
test_inproc_connect_SOURCES = test_inproc_connect.cpp
|
||||||
if !ON_MINGW
|
if !ON_MINGW
|
||||||
|
@ -117,7 +117,7 @@ int main (void)
|
|||||||
|
|
||||||
// Set the key flag
|
// Set the key flag
|
||||||
val = 1;
|
val = 1;
|
||||||
rc = zmq_setsockopt (from, ZMQ_DELAY_ATTACH_ON_CONNECT, &val, sizeof(val));
|
rc = zmq_setsockopt (from, ZMQ_IMMEDIATE, &val, sizeof(val));
|
||||||
assert (rc == 0);
|
assert (rc == 0);
|
||||||
|
|
||||||
// Connect to the invalid socket
|
// Connect to the invalid socket
|
||||||
@ -170,9 +170,9 @@ int main (void)
|
|||||||
rc = zmq_setsockopt (frontend, ZMQ_LINGER, &zero, sizeof (zero));
|
rc = zmq_setsockopt (frontend, ZMQ_LINGER, &zero, sizeof (zero));
|
||||||
assert (rc == 0);
|
assert (rc == 0);
|
||||||
|
|
||||||
// Frontend connects to backend using DELAY_ATTACH_ON_CONNECT
|
// Frontend connects to backend using IMMEDIATE
|
||||||
int on = 1;
|
int on = 1;
|
||||||
rc = zmq_setsockopt (frontend, ZMQ_DELAY_ATTACH_ON_CONNECT, &on, sizeof (on));
|
rc = zmq_setsockopt (frontend, ZMQ_IMMEDIATE, &on, sizeof (on));
|
||||||
assert (rc == 0);
|
assert (rc == 0);
|
||||||
rc = zmq_bind (backend, "tcp://127.0.0.1:5560");
|
rc = zmq_bind (backend, "tcp://127.0.0.1:5560");
|
||||||
assert (rc == 0);
|
assert (rc == 0);
|
@ -32,7 +32,7 @@ int main (void)
|
|||||||
assert (router);
|
assert (router);
|
||||||
|
|
||||||
int enabled = 1;
|
int enabled = 1;
|
||||||
int rc = zmq_setsockopt (req, ZMQ_REQ_REQUEST_IDS, &enabled, sizeof (int));
|
int rc = zmq_setsockopt (req, ZMQ_REQ_CORRELATE, &enabled, sizeof (int));
|
||||||
assert (rc == 0);
|
assert (rc == 0);
|
||||||
|
|
||||||
int rcvtimeo = 100;
|
int rcvtimeo = 100;
|
@ -28,12 +28,11 @@ int main (void)
|
|||||||
void *req = zmq_socket (ctx, ZMQ_REQ);
|
void *req = zmq_socket (ctx, ZMQ_REQ);
|
||||||
assert (req);
|
assert (req);
|
||||||
|
|
||||||
int disabled = 0;
|
int enabled = 1;
|
||||||
int rc = zmq_setsockopt (req, ZMQ_REQ_STRICT, &disabled, sizeof (int));
|
int rc = zmq_setsockopt (req, ZMQ_REQ_RELAXED, &enabled, sizeof (int));
|
||||||
assert (rc == 0);
|
assert (rc == 0);
|
||||||
|
|
||||||
int enabled = 1;
|
rc = zmq_setsockopt (req, ZMQ_REQ_CORRELATE, &enabled, sizeof (int));
|
||||||
rc = zmq_setsockopt (req, ZMQ_REQ_REQUEST_IDS, &enabled, sizeof (int));
|
|
||||||
assert (rc == 0);
|
assert (rc == 0);
|
||||||
|
|
||||||
rc = zmq_bind (req, "tcp://127.0.0.1:5555");
|
rc = zmq_bind (req, "tcp://127.0.0.1:5555");
|
@ -1,4 +1,4 @@
|
|||||||
EXTRA_DIST = curve_keygen.c z85_codec.h
|
EXTRA_DIST = curve_keygen.c
|
||||||
|
|
||||||
INCLUDES = -I$(top_srcdir)/include
|
INCLUDES = -I$(top_srcdir)/include
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user