diff options
Diffstat (limited to 'ACE/examples/QOS/Simple/QoS_Signal_Handler.cpp')
-rw-r--r-- | ACE/examples/QOS/Simple/QoS_Signal_Handler.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/ACE/examples/QOS/Simple/QoS_Signal_Handler.cpp b/ACE/examples/QOS/Simple/QoS_Signal_Handler.cpp new file mode 100644 index 00000000000..f01577f730e --- /dev/null +++ b/ACE/examples/QOS/Simple/QoS_Signal_Handler.cpp @@ -0,0 +1,40 @@ +// QoS_Signal_Handler.cpp +// $Id$ + +#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; +} |