summaryrefslogtreecommitdiff
path: root/gr-zeromq/lib/sub_msg_source_impl.cc
diff options
context:
space:
mode:
authorJacob Gilbert <mrjacobagilbert@gmail.com>2020-04-10 18:54:14 -0600
committerMarcus Müller <marcus@hostalia.de>2020-04-10 21:45:25 +0200
commitc17b2dabf050698532ab38c5460d44bab853ee76 (patch)
tree62937133ba1ecaf8769d4cb6b86195a16b87379e /gr-zeromq/lib/sub_msg_source_impl.cc
parentdaf936e44c85a36e76663f4bb82c6a8756e13812 (diff)
zeromq: Add bind argument for message based zeromq blocks.
This is needed to support N:1 patterns. To avoid confusion, since this is probably a feature only needed by those who Know What They Are Doing, the option is added to the Advanced block property tab.
Diffstat (limited to 'gr-zeromq/lib/sub_msg_source_impl.cc')
-rw-r--r--gr-zeromq/lib/sub_msg_source_impl.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/gr-zeromq/lib/sub_msg_source_impl.cc b/gr-zeromq/lib/sub_msg_source_impl.cc
index 3ead4025f1..281c5b1995 100644
--- a/gr-zeromq/lib/sub_msg_source_impl.cc
+++ b/gr-zeromq/lib/sub_msg_source_impl.cc
@@ -21,12 +21,12 @@
namespace gr {
namespace zeromq {
-sub_msg_source::sptr sub_msg_source::make(char* address, int timeout)
+sub_msg_source::sptr sub_msg_source::make(char* address, int timeout, bool bind)
{
- return gnuradio::get_initial_sptr(new sub_msg_source_impl(address, timeout));
+ return gnuradio::get_initial_sptr(new sub_msg_source_impl(address, timeout, bind));
}
-sub_msg_source_impl::sub_msg_source_impl(char* address, int timeout)
+sub_msg_source_impl::sub_msg_source_impl(char* address, int timeout, bool bind)
: gr::block("sub_msg_source",
gr::io_signature::make(0, 0, 0),
gr::io_signature::make(0, 0, 0)),
@@ -44,7 +44,12 @@ sub_msg_source_impl::sub_msg_source_impl(char* address, int timeout)
d_socket = new zmq::socket_t(*d_context, ZMQ_SUB);
d_socket->setsockopt(ZMQ_SUBSCRIBE, "", 0);
- d_socket->connect(address);
+
+ if (bind) {
+ d_socket->bind(address);
+ } else {
+ d_socket->connect(address);
+ }
message_port_register_out(d_port);
}