// QoS_Signal_Handler.cpp #include "ace/Log_Msg.h" #include "QoS_Signal_Handler.h" // constructor. QoS_Signal_Handler::QoS_Signal_Handler (ACE_QoS_Session *qos_session) : qos_session_ (qos_session) { } // Releases the QoS sessions gracefully. int QoS_Signal_Handler::handle_signal (int signum, siginfo_t *, ucontext_t*) { ACE_DEBUG ((LM_DEBUG, "QoS_Signal_Handler::handle_signal\n")); if (signum == SIGINT) { ACE_DEBUG ((LM_DEBUG, "QoS_Signal_Handler::handle_signal SIGINT called\n")); if (this->qos_session_->close () == -1) ACE_ERROR_RETURN ((LM_ERROR, "Unable to close the QoS session.\n"), -1); else ACE_DEBUG ((LM_DEBUG, "QoS Session with id %d closed successfully.\n", this->qos_session_->session_id ())); } else ACE_DEBUG ((LM_DEBUG, "A signal other than SIGINT received.\nIgnoring.\n")); return 0; }