From bdd4e1351d0446579caaad19e8ef4a4cf3d5e710 Mon Sep 17 00:00:00 2001 From: Ian Barber Date: Tue, 12 Jun 2012 14:28:32 +0100 Subject: [PATCH] Revert "Revert "Merge branch 'master' of github.com:zeromq/libzmq"" This reverts commit dde69fb9fb928db1850eb209db7aed79e26777fb. --- src/ipc_connecter.cpp | 28 +++++++++++++++++++++------- src/ipc_connecter.hpp | 1 + src/ipc_listener.cpp | 3 +-- src/tcp_connecter.cpp | 28 +++++++++++++++++++++------- src/tcp_connecter.hpp | 1 + src/tcp_listener.cpp | 3 +-- 6 files changed, 46 insertions(+), 18 deletions(-) diff --git a/src/ipc_connecter.cpp b/src/ipc_connecter.cpp index df3993dd..818ff865 100644 --- a/src/ipc_connecter.cpp +++ b/src/ipc_connecter.cpp @@ -59,13 +59,9 @@ zmq::ipc_connecter_t::ipc_connecter_t (class io_thread_t *io_thread_, zmq::ipc_connecter_t::~ipc_connecter_t () { - if (wait) - cancel_timer (reconnect_timer_id); - if (handle_valid) - rm_fd (handle); - - if (s != retired_fd) - close (); + zmq_assert (!wait); + zmq_assert (!handle_valid); + zmq_assert (s == retired_fd); } void zmq::ipc_connecter_t::process_plug () @@ -76,6 +72,24 @@ void zmq::ipc_connecter_t::process_plug () start_connecting (); } +void zmq::ipc_connecter_t::process_term (int linger_) +{ + if (wait) { + cancel_timer (reconnect_timer_id); + wait = false; + } + + if (handle_valid) { + rm_fd (handle); + handle_valid = false; + } + + if (s != retired_fd) + close (); + + own_t::process_term (linger_); +} + void zmq::ipc_connecter_t::in_event () { // We are not polling for incomming data, so we are actually called diff --git a/src/ipc_connecter.hpp b/src/ipc_connecter.hpp index 34df9776..604922b8 100644 --- a/src/ipc_connecter.hpp +++ b/src/ipc_connecter.hpp @@ -55,6 +55,7 @@ namespace zmq // Handlers for incoming commands. void process_plug (); + void process_term (int linger_); // Handlers for I/O events. void in_event (); diff --git a/src/ipc_listener.cpp b/src/ipc_listener.cpp index becf30dc..0033eef4 100644 --- a/src/ipc_listener.cpp +++ b/src/ipc_listener.cpp @@ -52,8 +52,7 @@ zmq::ipc_listener_t::ipc_listener_t (io_thread_t *io_thread_, zmq::ipc_listener_t::~ipc_listener_t () { - if (s != retired_fd) - close (); + zmq_assert (s == retired_fd); } void zmq::ipc_listener_t::process_plug () diff --git a/src/tcp_connecter.cpp b/src/tcp_connecter.cpp index 504268a1..0e74b6e3 100644 --- a/src/tcp_connecter.cpp +++ b/src/tcp_connecter.cpp @@ -68,13 +68,9 @@ zmq::tcp_connecter_t::tcp_connecter_t (class io_thread_t *io_thread_, zmq::tcp_connecter_t::~tcp_connecter_t () { - if (wait) - cancel_timer (reconnect_timer_id); - if (handle_valid) - rm_fd (handle); - - if (s != retired_fd) - close (); + zmq_assert (!wait); + zmq_assert (!handle_valid); + zmq_assert (s == retired_fd); } void zmq::tcp_connecter_t::process_plug () @@ -85,6 +81,24 @@ void zmq::tcp_connecter_t::process_plug () start_connecting (); } +void zmq::tcp_connecter_t::process_term (int linger_) +{ + if (wait) { + cancel_timer (reconnect_timer_id); + wait = false; + } + + if (handle_valid) { + rm_fd (handle); + handle_valid = false; + } + + if (s != retired_fd) + close (); + + own_t::process_term (linger_); +} + void zmq::tcp_connecter_t::in_event () { // We are not polling for incomming data, so we are actually called diff --git a/src/tcp_connecter.hpp b/src/tcp_connecter.hpp index a157dc55..e1b26b23 100644 --- a/src/tcp_connecter.hpp +++ b/src/tcp_connecter.hpp @@ -53,6 +53,7 @@ namespace zmq // Handlers for incoming commands. void process_plug (); + void process_term (int linger_); // Handlers for I/O events. void in_event (); diff --git a/src/tcp_listener.cpp b/src/tcp_listener.cpp index 789deca8..b397d3a8 100644 --- a/src/tcp_listener.cpp +++ b/src/tcp_listener.cpp @@ -60,8 +60,7 @@ zmq::tcp_listener_t::tcp_listener_t (io_thread_t *io_thread_, zmq::tcp_listener_t::~tcp_listener_t () { - if (s != retired_fd) - close (); + zmq_assert (s == retired_fd); } void zmq::tcp_listener_t::process_plug ()