summaryrefslogtreecommitdiff
path: root/examples/QOS/QoS_Signal_Handler.cpp
blob: 706b122978befaa25d17ffec5f6f6ad44e20a9ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// QoS_Signal_Handler.cpp
// $Id$

#include "QoS_Signal_Handler.h"

ACE_RCSID(QOS, QoS_Signal_Handler,"$Id$")

// 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*)
{
  if (signum == SIGINT)
    {
      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;
}