41 verbose_unsubs (false),
65 if (subscribe_to_all_)
88 while (pipe_->
read (&sub)) {
90 unsigned char *
const data = (
unsigned char *) sub.
data ();
92 if (size > 0 && (*data == 0 || *data == 1)) {
141 if (optvallen_ !=
sizeof(
int) || *static_cast <const int*> (optval_) < 0) {
146 verbose_subs = (*static_cast <
const int*> (optval_) != 0);
151 verbose_subs = (*static_cast <
const int*> (optval_) != 0);
156 lossy = (*static_cast <
const int*> (optval_) == 0);
159 manual = (*static_cast <
const int*> (optval_) != 0);
175 if (optvallen_ > 0) {
180 memcpy(data, optval_, optvallen_);
257 int rc = msg_->
close ();
261 memcpy (msg_->
data (),
287 if (self->options.type !=
ZMQ_PUB) {
290 blob_t unsub (size_ + 1, 0);
293 memcpy (&unsub [1], data_, size_);
294 self->pending_data.push_back (unsub);
295 self->pending_metadata.push_back (NULL);
296 self->pending_flags.push_back (0);
299 self->last_pipe = NULL;
300 self->pending_pipes.push_back (NULL);
#define ZMQ_XPUB_VERBOSER
void match(unsigned char *data_, size_t size_, void(*func_)(zmq::pipe_t *pipe_, void *arg_), void *arg_)
std::deque< pipe_t * > pending_pipes
static void send_unsubscription(unsigned char *data_, size_t size_, void *arg_)
void xattach_pipe(zmq::pipe_t *pipe_, bool subscribe_to_all_=false)
void activated(zmq::pipe_t *pipe_)
std::deque< metadata_t * > pending_metadata
int xsend(zmq::msg_t *msg_)
std::deque< blob_t > pending_data
std::deque< unsigned char > pending_flags
void match(zmq::pipe_t *pipe_)
#define ZMQ_XPUB_WELCOME_MSG
int init_size(size_t size_)
xpub_t(zmq::ctx_t *parent_, uint32_t tid_, int sid_)
void xpipe_terminated(zmq::pipe_t *pipe_)
int send_to_matching(zmq::msg_t *msg_)
void attach(zmq::pipe_t *pipe_)
int xsetsockopt(int option_, const void *optval_, size_t optvallen_)
std::basic_string< unsigned char > blob_t
static void mark_as_matching(zmq::pipe_t *pipe_, void *arg_)
bool add(unsigned char *prefix_, size_t size_, zmq::pipe_t *pipe_)
void set_flags(unsigned char flags_)
unsigned char data[max_vsm_size]
void pipe_terminated(zmq::pipe_t *pipe_)
void rm(zmq::pipe_t *pipe_, void(*func_)(unsigned char *data_, size_t size_, void *arg_), void *arg_, bool call_on_uniq_)
void xread_activated(zmq::pipe_t *pipe_)
void xwrite_activated(zmq::pipe_t *pipe_)
int xrecv(zmq::msg_t *msg_)
void set_metadata(metadata_t *metadata_)