Rudiments
signalclasses.h
1 // Copyright (c) 1999-2002 David Muse
2 // See the COPYING file for more information.
3 
4 #ifndef RUDIMENTS_SIGNALCLASSES_H
5 #define RUDIMENTS_SIGNALCLASSES_H
6 
7 #include <rudiments/private/signalclassesincludes.h>
8 
9 #ifdef RUDIMENTS_NAMESPACE
10 namespace rudiments {
11 #endif
12 
13 class signalsetprivate;
14 
18 class RUDIMENTS_DLLSPEC signalset {
19  friend class signalmanager;
20  friend class signalhandler;
21  public:
22 
24  signalset();
25 
27  ~signalset();
28 
31  bool addSignal(int32_t signum);
32 
35  bool addAllSignals();
36 
39  bool removeSignal(int32_t signum);
40 
43  bool removeAllSignals();
44 
47  int32_t signalIsInSet(int32_t signum) const;
48 
49  #include <rudiments/private/signalset.h>
50 };
51 
52 
53 
56 class RUDIMENTS_DLLSPEC signalmanager {
57  public:
60  static bool sendSignal(pid_t processid, int32_t signum);
61 
64  static bool raiseSignal(int32_t signum);
65 
75  static uint32_t alarm(uint32_t seconds);
76 
79  static bool ignoreSignals(const signalset *sset);
80 
84  static bool waitForSignals(const signalset *mask);
85 
90  static bool examineBlockedSignals(signalset *sset);
91 };
92 
93 
96 class signalhandlerprivate;
97 class RUDIMENTS_DLLSPEC signalhandler {
98  public:
99 
101  signalhandler();
102 
104  ~signalhandler();
105 
108  void setHandler(void (*handler)(int32_t));
109 
112  void (*getHandler())(int32_t);
113 
120  bool handleSignal(int32_t signum);
121 
130  bool handleSignal(int32_t signum, signalhandler *oldhandler);
131 
133  void removeAllFlags();
134 
137  void addFlag(int32_t flag);
138 
141  void removeFlag(int32_t flag);
142 
145  int32_t getFlags() const;
146 
147 
149  void setMask(const signalset *sset);
150 
152  const signalset *getMask() const;
153 
164  static bool isSignalHandlerIntUsed();
165 
166  #include <rudiments/private/signalhandler.h>
167 
168 };
169 
170 #ifdef RUDIMENTS_NAMESPACE
171 }
172 #endif
173 
174 #endif