Rudiments
/home/dmuse/src/rudiments/include/rudiments/signalclasses.h
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