From fba28c7c0cddd7c54fe45b38fc38ac6fe5a48438 Mon Sep 17 00:00:00 2001 From: Martin Sustrik Date: Sun, 11 Apr 2010 16:36:27 +0200 Subject: issue 1 - Change zmq_term semantics --- src/app_thread.cpp | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'src/app_thread.cpp') diff --git a/src/app_thread.cpp b/src/app_thread.cpp index 61e49e5..6141c06 100644 --- a/src/app_thread.cpp +++ b/src/app_thread.cpp @@ -62,7 +62,8 @@ zmq::app_thread_t::app_thread_t (dispatcher_t *dispatcher_, int thread_slot_, int flags_) : object_t (dispatcher_, thread_slot_), - last_processing_time (0) + last_processing_time (0), + terminated (false) { if (flags_ & ZMQ_POLL) { signaler = new (std::nothrow) fd_signaler_t; @@ -81,12 +82,17 @@ zmq::app_thread_t::~app_thread_t () delete signaler; } +void zmq::app_thread_t::stop () +{ + send_stop (); +} + zmq::i_signaler *zmq::app_thread_t::get_signaler () { return signaler; } -void zmq::app_thread_t::process_commands (bool block_, bool throttle_) +bool zmq::app_thread_t::process_commands (bool block_, bool throttle_) { uint64_t signals; if (block_) @@ -117,7 +123,7 @@ void zmq::app_thread_t::process_commands (bool block_, bool throttle_) // Check whether certain time have elapsed since last command // processing. if (current_time - last_processing_time <= max_command_delay) - return; + return !terminated; last_processing_time = current_time; } #endif @@ -138,6 +144,8 @@ void zmq::app_thread_t::process_commands (bool block_, bool throttle_) } } } + + return !terminated; } zmq::socket_base_t *zmq::app_thread_t::create_socket (int type_) @@ -190,3 +198,14 @@ void zmq::app_thread_t::remove_socket (socket_base_t *socket_) if (sockets.empty ()) dispatcher->no_sockets (this); } + +void zmq::app_thread_t::process_stop () +{ + terminated = true; +} + +bool zmq::app_thread_t::is_terminated () +{ + return terminated; +} + -- cgit v1.2.3