summaryrefslogtreecommitdiff
path: root/src/zmq_engine.cpp
diff options
context:
space:
mode:
authorMartin Sustrik <sustrik@250bpm.com>2010-09-19 22:45:48 +0200
committerMartin Sustrik <sustrik@250bpm.com>2010-09-19 22:45:48 +0200
commit1d2399720b3fd06da5e7f9f4a211f30c57a9ce2d (patch)
tree291de88632b3047feab67b0a14ca48996d9ef86d /src/zmq_engine.cpp
parentcda3c96a7fed0ee603c13e787ac511a1ea171367 (diff)
zmq_init_t destroyed zmq_engine_t before plugging it out from the poller first -- fixed
Diffstat (limited to 'src/zmq_engine.cpp')
-rw-r--r--src/zmq_engine.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/zmq_engine.cpp b/src/zmq_engine.cpp
index 3e98c53..815697c 100644
--- a/src/zmq_engine.cpp
+++ b/src/zmq_engine.cpp
@@ -40,7 +40,8 @@ zmq::zmq_engine_t::zmq_engine_t (fd_t fd_, const options_t &options_) :
outsize (0),
encoder (out_batch_size),
inout (NULL),
- options (options_)
+ options (options_),
+ plugged (false)
{
// Initialise the underlying socket.
int rc = tcp_socket.open (fd_, options.sndbuf, options.rcvbuf);
@@ -49,10 +50,14 @@ zmq::zmq_engine_t::zmq_engine_t (fd_t fd_, const options_t &options_) :
zmq::zmq_engine_t::~zmq_engine_t ()
{
+ zmq_assert (!plugged);
}
void zmq::zmq_engine_t::plug (io_thread_t *io_thread_, i_inout *inout_)
{
+ zmq_assert (!plugged);
+ plugged = true;
+
// Conncet to session/init object.
zmq_assert (!inout);
zmq_assert (inout_);
@@ -72,6 +77,9 @@ void zmq::zmq_engine_t::plug (io_thread_t *io_thread_, i_inout *inout_)
void zmq::zmq_engine_t::unplug ()
{
+ zmq_assert (plugged);
+ plugged = false;
+
// Cancel all fd subscriptions.
rm_fd (handle);