IBR-DTNSuite  0.12
SignalHandler.h
Go to the documentation of this file.
1 /*
2  * SignalHandler.h
3  *
4  * Copyright (C) 2014 IBR, TU Braunschweig
5  *
6  * Written-by: Johannes Morgenroth <morgenroth@ibr.cs.tu-bs.de>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 
23 #include "ibrcommon/thread/Queue.h"
24 #include <csignal>
25 
26 #ifndef SIGNALHANDLER_H_
27 #define SIGNALHANDLER_H_
28 
29 namespace ibrcommon
30 {
32  {
33  public:
34  SignalHandler(void (*handler)(int));
35  virtual ~SignalHandler();
36 
40  void initialize();
41 
45  void handle(int signal);
46 
50  virtual void run(void) throw ();
51 
52  protected:
56  virtual void __cancellation() throw ();
57 
58  private:
59  static void _proxy_handler(int signal);
60 
61  void (*_handler)(int);
62  static ibrcommon::Queue<int> _signal_queue;
63  };
64 } /* namespace ibrcommon */
65 
66 #endif /* SIGNALHANDLER_H_ */