2
Copyright (c) 2009-2011 250bpm s.r.o.
3
Copyright (c) 2007-2009 iMatix Corporation
4
Copyright (c) 2007-2011 Other contributors as noted in the AUTHORS file
6
This file is part of 0MQ.
8
0MQ is free software; you can redistribute it and/or modify it under
9
the terms of the GNU Lesser General Public License as published by
10
the Free Software Foundation; either version 3 of the License, or
11
(at your option) any later version.
13
0MQ is distributed in the hope that it will be useful,
14
but WITHOUT ANY WARRANTY; without even the implied warranty of
15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
GNU Lesser General Public License for more details.
18
You should have received a copy of the GNU Lesser General Public License
19
along with this program. If not, see <http://www.gnu.org/licenses/>.
25
zmq::sub_t::sub_t (class ctx_t *parent_, uint32_t tid_) :
26
xsub_t (parent_, tid_)
28
options.type = ZMQ_SUB;
30
// Switch filtering messages on (as opposed to XSUB which where the
32
options.filter = true;
39
int zmq::sub_t::xsetsockopt (int option_, const void *optval_,
42
if (option_ != ZMQ_SUBSCRIBE && option_ != ZMQ_UNSUBSCRIBE) {
47
// Create the subscription message.
49
int rc = msg.init_size (optvallen_ + 1);
50
errno_assert (rc == 0);
51
unsigned char *data = (unsigned char*) msg.data ();
52
if (option_ == ZMQ_SUBSCRIBE)
54
else if (option_ == ZMQ_UNSUBSCRIBE)
56
memcpy (data + 1, optval_, optvallen_);
58
// Pass it further on in the stack.
60
rc = xsub_t::xsend (&msg, 0);
63
int rc2 = msg.close ();
64
errno_assert (rc2 == 0);
70
int zmq::sub_t::xsend (msg_t *msg_, int flags_)
72
// Overload the XSUB's send.
77
bool zmq::sub_t::xhas_out ()
79
// Overload the XSUB's send.
83
zmq::sub_session_t::sub_session_t (io_thread_t *io_thread_, bool connect_,
84
socket_base_t *socket_, const options_t &options_,
85
const char *protocol_, const char *address_) :
86
xsub_session_t (io_thread_, connect_, socket_, options_, protocol_,
91
zmq::sub_session_t::~sub_session_t ()