diff options
| author | Martin Sustrik <sustrik@250bpm.com> | 2010-02-08 18:37:48 +0100 | 
|---|---|---|
| committer | Martin Sustrik <sustrik@250bpm.com> | 2010-02-08 18:37:48 +0100 | 
| commit | 01533a5aefb49e23be95cab9cfa5ca32cd438d25 (patch) | |
| tree | 85ed3868c8973c13d3a1e90046427df7c3374421 /src/app_thread.cpp | |
| parent | 7593d815ac57f2877480c5056b2f1aa65460f5c3 (diff) | |
ZMQII-65: Two OS threads are mapped to the same app_thread_t
Diffstat (limited to 'src/app_thread.cpp')
| -rw-r--r-- | src/app_thread.cpp | 23 | 
1 files changed, 4 insertions, 19 deletions
diff --git a/src/app_thread.cpp b/src/app_thread.cpp index c55eb75..eff0cf7 100644 --- a/src/app_thread.cpp +++ b/src/app_thread.cpp @@ -62,7 +62,6 @@  zmq::app_thread_t::app_thread_t (dispatcher_t *dispatcher_, int thread_slot_,        int flags_) :      object_t (dispatcher_, thread_slot_), -    associated (false),      last_processing_time (0)  {      if (flags_ & ZMQ_POLL) { @@ -87,24 +86,6 @@ zmq::i_signaler *zmq::app_thread_t::get_signaler ()      return signaler;  } -bool zmq::app_thread_t::is_current () -{ -    return !sockets.empty () && associated && -        thread_t::equal (tid, thread_t::id ()); -} - -bool zmq::app_thread_t::make_current () -{ -    //  If there are object managed by this slot we cannot assign the slot -    //  to a different thread. -    if (!sockets.empty ()) -        return false; - -    associated = true; -    tid = thread_t::id (); -    return true; -} -  void zmq::app_thread_t::process_commands (bool block_, bool throttle_)  {      uint64_t signals; @@ -191,6 +172,8 @@ zmq::socket_base_t *zmq::app_thread_t::create_socket (int type_)          s = new (std::nothrow) downstream_t (this);          break;      default: +        if (sockets.empty ()) +            dispatcher->no_sockets (this);          errno = EINVAL;          return NULL;      } @@ -204,4 +187,6 @@ zmq::socket_base_t *zmq::app_thread_t::create_socket (int type_)  void zmq::app_thread_t::remove_socket (socket_base_t *socket_)  {      sockets.erase (socket_); +    if (sockets.empty ()) +        dispatcher->no_sockets (this);  }  | 
