diff options
Diffstat (limited to 'gr-zeromq/lib/req_msg_source_impl.cc')
-rw-r--r-- | gr-zeromq/lib/req_msg_source_impl.cc | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/gr-zeromq/lib/req_msg_source_impl.cc b/gr-zeromq/lib/req_msg_source_impl.cc index a1d2bf76f7..ff4405cb0e 100644 --- a/gr-zeromq/lib/req_msg_source_impl.cc +++ b/gr-zeromq/lib/req_msg_source_impl.cc @@ -16,6 +16,7 @@ #include "tag_headers.h" #include <gnuradio/io_signature.h> #include <boost/date_time/posix_time/posix_time.hpp> +#include <boost/make_unique.hpp> #include <boost/thread/thread.hpp> namespace gr { @@ -31,6 +32,8 @@ req_msg_source_impl::req_msg_source_impl(char* address, int timeout, bool bind) gr::io_signature::make(0, 0, 0), gr::io_signature::make(0, 0, 0)), d_timeout(timeout), + d_context(1), + d_socket(d_context, ZMQ_REQ), d_port(pmt::mp("out")) { int major, minor, patch; @@ -40,32 +43,25 @@ req_msg_source_impl::req_msg_source_impl(char* address, int timeout, bool bind) d_timeout = timeout * 1000; } - d_context = new zmq::context_t(1); - d_socket = new zmq::socket_t(*d_context, ZMQ_REQ); - int time = 0; - d_socket->setsockopt(ZMQ_LINGER, &time, sizeof(time)); + d_socket.setsockopt(ZMQ_LINGER, &time, sizeof(time)); if (bind) { - d_socket->bind(address); + d_socket.bind(address); } else { - d_socket->connect(address); + d_socket.connect(address); } message_port_register_out(d_port); } -req_msg_source_impl::~req_msg_source_impl() -{ - d_socket->close(); - delete d_socket; - delete d_context; -} +req_msg_source_impl::~req_msg_source_impl() {} bool req_msg_source_impl::start() { d_finished = false; - d_thread = new boost::thread(boost::bind(&req_msg_source_impl::readloop, this)); + d_thread = boost::make_unique<boost::thread>( + boost::bind(&req_msg_source_impl::readloop, this)); return true; } @@ -82,7 +78,7 @@ void req_msg_source_impl::readloop() // std::cout << "readloop\n"; zmq::pollitem_t itemsout[] = { - { static_cast<void*>(*d_socket), 0, ZMQ_POLLOUT, 0 } + { static_cast<void*>(d_socket), 0, ZMQ_POLLOUT, 0 } }; zmq::poll(&itemsout[0], 1, d_timeout); @@ -93,13 +89,13 @@ void req_msg_source_impl::readloop() zmq::message_t request(sizeof(int)); memcpy((void*)request.data(), &nmsg, sizeof(int)); #if USE_NEW_CPPZMQ_SEND_RECV - d_socket->send(request, zmq::send_flags::none); + d_socket.send(request, zmq::send_flags::none); #else - d_socket->send(request); + d_socket.send(request); #endif } - zmq::pollitem_t items[] = { { static_cast<void*>(*d_socket), 0, ZMQ_POLLIN, 0 } }; + zmq::pollitem_t items[] = { { static_cast<void*>(d_socket), 0, ZMQ_POLLIN, 0 } }; zmq::poll(&items[0], 1, d_timeout); // If we got a reply, process @@ -107,9 +103,9 @@ void req_msg_source_impl::readloop() // Receive data zmq::message_t msg; #if USE_NEW_CPPZMQ_SEND_RECV - d_socket->recv(msg); + d_socket.recv(msg); #else - d_socket->recv(&msg); + d_socket.recv(&msg); #endif std::string buf(static_cast<char*>(msg.data()), msg.size()); |