diff options
| author | Sam Varshavchik | 2013-08-19 16:39:41 -0400 |
|---|---|---|
| committer | Sam Varshavchik | 2013-08-25 14:43:51 -0400 |
| commit | 9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch) | |
| tree | 7a81a04cb51efb078ee350859a64be2ebc6b8813 /maildrop/exittrap.h | |
| parent | a9520698b770168d1f33d6301463bb70a19655ec (diff) | |
| download | courier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2 | |
Initial checkin
Imported from subversion report, converted to git. Updated all paths in
scripts and makefiles, reflecting the new directory hierarchy.
Diffstat (limited to 'maildrop/exittrap.h')
| -rw-r--r-- | maildrop/exittrap.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/maildrop/exittrap.h b/maildrop/exittrap.h new file mode 100644 index 0000000..e73571e --- /dev/null +++ b/maildrop/exittrap.h @@ -0,0 +1,34 @@ +#ifndef exittrap_h +#define exittrap_h + + +#include "config.h" + +////////////////////////////////////////////////////////////////////////// +// +// ExitTrap implements exit traps - cleanup functions that must be called +// in case of an abnormal program termination. +// +// This class does NOT do anything like trap signals, etcetera. The main +// program should do that, and call onexit() in order to call the cleanup() +// virtual function. +// +////////////////////////////////////////////////////////////////////////// + +class ExitTrap { + + ExitTrap *next, *prev; + virtual void cleanup()=0; + virtual void forked()=0; + int callcleanup; +protected: + void destroying() { callcleanup=0; } + void constructed() { callcleanup=1; } +public: + ExitTrap(); + virtual ~ExitTrap(); + +static void onexit(); +static void onfork(); +} ; +#endif |
