mirror of
https://github.com/zeromq/libzmq.git
synced 2025-10-29 12:18:04 +01:00
Subscription matching moved from XSUB to SUB socket
This patch will prevent duplicate matching in devices in the future. Instead of matching in both XPUB and XSUB, it'll happen only in XPUB. Receiver endpoint will still filter messages via SUB socket. Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
This commit is contained in:
19
src/sub.hpp
19
src/sub.hpp
@@ -22,6 +22,8 @@
|
||||
#define __ZMQ_SUB_HPP_INCLUDED__
|
||||
|
||||
#include "xsub.hpp"
|
||||
#include "trie.hpp"
|
||||
#include "msg.hpp"
|
||||
|
||||
namespace zmq
|
||||
{
|
||||
@@ -38,9 +40,26 @@ namespace zmq
|
||||
int xsetsockopt (int option_, const void *optval_, size_t optvallen_);
|
||||
int xsend (class msg_t *msg_, int options_);
|
||||
bool xhas_out ();
|
||||
int xrecv (class msg_t *msg_, int flags_);
|
||||
bool xhas_in ();
|
||||
|
||||
private:
|
||||
|
||||
// Check whether the message matches at least one subscription.
|
||||
bool match (class msg_t *msg_);
|
||||
|
||||
// The repository of subscriptions.
|
||||
trie_t subscriptions;
|
||||
|
||||
// If true, 'message' contains a matching message to return on the
|
||||
// next recv call.
|
||||
bool has_message;
|
||||
msg_t message;
|
||||
|
||||
// If true, part of a multipart message was already received, but
|
||||
// there are following parts still waiting.
|
||||
bool more;
|
||||
|
||||
sub_t (const sub_t&);
|
||||
const sub_t &operator = (const sub_t&);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user