diff options
author | Martin Sustrik <sustrik@250bpm.com> | 2011-07-11 09:57:59 +0200 |
---|---|---|
committer | Martin Sustrik <sustrik@250bpm.com> | 2011-07-11 09:57:59 +0200 |
commit | d7adc3f19a4c941e854552d6d7881950a69b0d23 (patch) | |
tree | efddd559463040a438a71d30a6c098b98c61d972 | |
parent | a154ef69da4e41d3a8ce5a3141fe8f052c7ea853 (diff) |
ZMQ_FILTER option removed
The filtering is now done depending on the socket type. SUB socket
filters the messages (end-to-end filtering) while XSUB relies
on upstream nodes to do (imprefect) filtering.
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
-rw-r--r-- | doc/zmq_getsockopt.txt | 17 | ||||
-rw-r--r-- | doc/zmq_setsockopt.txt | 16 | ||||
-rw-r--r-- | include/zmq.h | 1 | ||||
-rw-r--r-- | src/options.cpp | 22 | ||||
-rw-r--r-- | src/options.hpp | 6 | ||||
-rw-r--r-- | src/sub.cpp | 4 |
6 files changed, 9 insertions, 57 deletions
diff --git a/doc/zmq_getsockopt.txt b/doc/zmq_getsockopt.txt index 09256c2..51b6c9e 100644 --- a/doc/zmq_getsockopt.txt +++ b/doc/zmq_getsockopt.txt @@ -320,23 +320,6 @@ Default value:: 1 Applicable socket types:: all, when using multicast transports -ZMQ_FILTER: Switches message filtering on or off -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The option shall retrieve the filtering behaiour of the socket. -If 1, messages are filtered according to subcriptions as expected. -If 0, messages are not filtered. This is a performance tweak. If a device -receives a message from XSUB socket and it is about to send it to XPUB socket -immediately, filtering would be done twice. We can thus turn off filtering in -XSUB socket and rely on filtering in XPUB socket. - -[horizontal] -Option value type:: int -Option value unit:: boolean -Default value:: 1 -Applicable socket types:: ZMQ_SUB, ZMQ_XSUB - - ZMQ_RCVTIMEO: Maximum time before a socket operation returns with EAGAIN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/doc/zmq_setsockopt.txt b/doc/zmq_setsockopt.txt index 0093085..8bc9e8f 100644 --- a/doc/zmq_setsockopt.txt +++ b/doc/zmq_setsockopt.txt @@ -312,22 +312,6 @@ Default value:: 1 Applicable socket types:: all, when using multicast transports -ZMQ_FILTER: Switches message filtering on or off -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -If set to 1, messages are filtered according to subcriptions as expected. -If set to 0, messages are not filtered. This is a performance tweak. If a device -receives a message from XSUB socket and it is about to send it to XPUB socket -immediately, filtering would be done twice. We can thus turn off filtering in -XSUB socket and rely on filtering in XPUB socket. - -[horizontal] -Option value type:: int -Option value unit:: boolean -Default value:: 1 -Applicable socket types:: ZMQ_SUB, ZMQ_XSUB - - ZMQ_RCVTIMEO: Maximum time before a recv operation returns with EAGAIN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/include/zmq.h b/include/zmq.h index 7de421b..a97a2ff 100644 --- a/include/zmq.h +++ b/include/zmq.h @@ -182,7 +182,6 @@ ZMQ_EXPORT int zmq_term (void *context); #define ZMQ_SNDHWM 23 #define ZMQ_RCVHWM 24 #define ZMQ_MULTICAST_HOPS 25 -#define ZMQ_FILTER 26 #define ZMQ_RCVTIMEO 27 #define ZMQ_SNDTIMEO 28 #define ZMQ_RCVLABEL 29 diff --git a/src/options.cpp b/src/options.cpp index aa92f93..be7c4b5 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -38,12 +38,12 @@ zmq::options_t::options_t () : reconnect_ivl_max (0), backlog (100), maxmsgsize (-1), - filter (1), rcvtimeo (-1), sndtimeo (-1), immediate_connect (true), delay_on_close (true), - delay_on_disconnect (true) + delay_on_disconnect (true), + filter (false) { } @@ -177,15 +177,6 @@ int zmq::options_t::setsockopt (int option_, const void *optval_, multicast_hops = *((int*) optval_); return 0; - case ZMQ_FILTER: - if (optvallen_ != sizeof (int) || (*((int*) optval_) != 0 && - *((int*) optval_) != 1)) { - errno = EINVAL; - return -1; - } - filter = *((int*) optval_); - return 0; - case ZMQ_RCVTIMEO: if (optvallen_ != sizeof (int)) { errno = EINVAL; @@ -347,15 +338,6 @@ int zmq::options_t::getsockopt (int option_, void *optval_, size_t *optvallen_) *optvallen_ = sizeof (int); return 0; - case ZMQ_FILTER: - if (*optvallen_ < sizeof (int)) { - errno = EINVAL; - return -1; - } - *((int*) optval_) = filter; - *optvallen_ = sizeof (int); - return 0; - case ZMQ_RCVTIMEO: if (*optvallen_ < sizeof (int)) { errno = EINVAL; diff --git a/src/options.hpp b/src/options.hpp index 70144b2..a4a0bc6 100644 --- a/src/options.hpp +++ b/src/options.hpp @@ -75,9 +75,6 @@ namespace zmq // Maximal size of message to handle. int64_t maxmsgsize; - // If 1, (X)SUB socket should filter the messages. If 0, it should not. - int filter; - // The timeout for send/recv operations for this socket. int rcvtimeo; int sndtimeo; @@ -95,6 +92,9 @@ namespace zmq // If true, socket reads all the messages from the pipe and delivers // them to the user when the peer terminates. bool delay_on_disconnect; + + // If 1, (X)SUB socket should filter the messages. If 0, it should not. + bool filter; }; } diff --git a/src/sub.cpp b/src/sub.cpp index c8ffd2e..2a1454a 100644 --- a/src/sub.cpp +++ b/src/sub.cpp @@ -25,6 +25,10 @@ zmq::sub_t::sub_t (class ctx_t *parent_, uint32_t tid_) : xsub_t (parent_, tid_) { options.type = ZMQ_SUB; + + // Switch filtering messages on (as opposed to XSUB which where the + // filtering is off). + options.filter = true; } zmq::sub_t::~sub_t () |