void zmq::session_base_t::engine_error ( zmq::stream_engine_t::error_reason_t reason) { // Engine is dead. Let's forget about it. engine = NULL; // Remove any half-done messages from the pipes. if (pipe) clean_pipes (); zmq_assert (reason == stream_engine_t::connection_error || reason == stream_engine_t::timeout_error || reason == stream_engine_t::protocol_error); switch (reason) { case stream_engine_t::timeout_error: case stream_engine_t::connection_error: if (active) reconnect (); else terminate (); break; case stream_engine_t::protocol_error: terminate (); break; } // Just in case there's only a delimiter in the pipe. if (pipe) pipe->check_read (); if (zap_pipe) zap_pipe->check_read (); }
void zmq::session_base_t::detach () { // Engine is dead. Let's forget about it. engine = NULL; // Remove any half-done messages from the pipes. clean_pipes (); // Send the event to the derived class. detached (); // Just in case there's only a delimiter in the pipe. if (pipe) pipe->check_read (); }
void zmq::session_base_t::engine_error () { // Engine is dead. Let's forget about it. engine = NULL; // Remove any half-done messages from the pipes. if (pipe) clean_pipes (); if (active) reconnect (); else terminate (); // Just in case there's only a delimiter in the pipe. if (pipe) pipe->check_read (); if (zap_pipe) zap_pipe->check_read (); }