Rudiments
|
00001 // Copyright (c) 1999-2002 David Muse 00002 // See the COPYING file for more information. 00003 00004 #ifndef RUDIMENTS_SIGNALCLASSES_H 00005 #define RUDIMENTS_SIGNALCLASSES_H 00006 00007 #include <rudiments/private/signalclassesincludes.h> 00008 00009 #ifdef RUDIMENTS_NAMESPACE 00010 namespace rudiments { 00011 #endif 00012 00013 class signalsetprivate; 00014 00018 class RUDIMENTS_DLLSPEC signalset { 00019 friend class signalmanager; 00020 friend class signalhandler; 00021 public: 00022 00024 signalset(); 00025 00027 ~signalset(); 00028 00031 bool addSignal(int32_t signum); 00032 00035 bool addAllSignals(); 00036 00039 bool removeSignal(int32_t signum); 00040 00043 bool removeAllSignals(); 00044 00047 int32_t signalIsInSet(int32_t signum) const; 00048 00049 #include <rudiments/private/signalset.h> 00050 }; 00051 00052 00053 00056 class RUDIMENTS_DLLSPEC signalmanager { 00057 public: 00060 static bool sendSignal(pid_t processid, int32_t signum); 00061 00064 static bool raiseSignal(int32_t signum); 00065 00075 static uint32_t alarm(uint32_t seconds); 00076 00079 static bool ignoreSignals(const signalset *sset); 00080 00084 static bool waitForSignals(const signalset *mask); 00085 00090 static bool examineBlockedSignals(signalset *sset); 00091 }; 00092 00093 00096 class signalhandlerprivate; 00097 class RUDIMENTS_DLLSPEC signalhandler { 00098 public: 00099 00101 signalhandler(); 00102 00104 ~signalhandler(); 00105 00108 void setHandler(void (*handler)(int32_t)); 00109 00112 void (*getHandler())(int32_t); 00113 00120 bool handleSignal(int32_t signum); 00121 00130 bool handleSignal(int32_t signum, signalhandler *oldhandler); 00131 00133 void removeAllFlags(); 00134 00137 void addFlag(int32_t flag); 00138 00141 void removeFlag(int32_t flag); 00142 00145 int32_t getFlags() const; 00146 00147 00149 void setMask(const signalset *sset); 00150 00152 const signalset *getMask() const; 00153 00164 static bool isSignalHandlerIntUsed(); 00165 00166 #include <rudiments/private/signalhandler.h> 00167 00168 }; 00169 00170 #ifdef RUDIMENTS_NAMESPACE 00171 } 00172 #endif 00173 00174 #endif