Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/terrain/src/util/signal_handler.h @ 9135

Last change on this file since 9135 was 9110, checked in by bensch, 18 years ago

orxonox/trunk: merged the Presentation back

File size: 1.8 KB
Line 
1/*!
2 * @file signalhandler.h
3 * Defines game rules for this game
4 */
5
6#ifndef _SIGNAL_HANDLER_H
7#define _SIGNAL_HANDLER_H
8
9#include <list>
10#include <string>
11
12
13#define GDB_BT_FILE "orxonox.backtrace"
14enum GdbRunType{
15  GDB_RUN_WRITE_TO_FILE = 1,
16  GDB_RUN_IN_FOREGROUND
17};
18
19typedef int (*SignalCallback)( void * someData );
20
21#ifndef __WIN32__
22#include <signal.h>
23
24struct SignalRec
25{
26  int signal;
27  sig_t handler;
28};
29
30struct SignalCallbackRec
31{
32  SignalCallback cb;
33  void * someData;
34};
35
36
37typedef std::list<SignalRec> SignalRecList;
38typedef std::list<SignalCallbackRec> SignalCallbackList;
39
40class SignalHandler
41{
42  private:
43    SignalHandler();
44  public:
45    inline static SignalHandler* getInstance() { if (!SignalHandler::singletonRef) SignalHandler::singletonRef = new SignalHandler(); return SignalHandler::singletonRef; }
46    ~SignalHandler(){ SignalHandler::singletonRef = NULL; }
47
48    void registerCallback( SignalCallback cb, void * someData );
49
50    void doCatch( std::string appName, GdbRunType type = GDB_RUN_WRITE_TO_FILE );
51    void dontCatch();
52
53  private:
54    static void sigHandler( int sig );
55
56    void catchSignal( int sig );
57    SignalRecList sigRecList;
58
59    SignalCallbackList callbackList;
60
61    static SignalHandler * singletonRef;
62
63    GdbRunType type;
64
65    std::string appName;
66};
67
68#else /* if defined __WIN32__ */
69class SignalHandler
70{
71 public:
72   inline static SignalHandler* getInstance() { if (!SignalHandler::singletonRef) SignalHandler::singletonRef = new SignalHandler(); return SignalHandler::singletonRef; };
73  void doCatch( std::string appName, GdbRunType type = GDB_RUN_WRITE_TO_FILE ) {};
74  void dontCatch() {};
75  void registerCallback( SignalCallback cb, void * someData ) {};
76
77 private:
78    static SignalHandler * singletonRef;
79};
80#endif
81
82#endif /* _SIGNAL_HANDLER_H */
83
Note: See TracBrowser for help on using the repository browser.