00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef alarm_handler_h
00027 #define alarm_handler_h
00028
00029 #include <cstdio>
00030
00031 #include <string>
00032
00033 #include "EventHandler.h"
00034
00035 #define FILE_METHODS 1
00036
00037 namespace libdap
00038 {
00039
00047 class AlarmHandler : public EventHandler
00048 {
00049 private:
00050 #if FILE_METHODS
00051 FILE *d_file;
00052 #endif
00053 ostream &d_stream;
00054 string d_version;
00055
00056
00057 AlarmHandler() :
00058 #if FILE_METHODS
00059 d_file( 0 ),
00060 #endif
00061 d_stream( cout )
00062 {}
00063
00064 public:
00067 #if FILE_METHODS
00068 AlarmHandler(FILE *s) : d_file(s), d_stream( cout )
00069 {}
00070 #endif
00071 AlarmHandler(ostream &out) :
00072 #if FILE_METHODS
00073 d_file(0),
00074 #endif
00075 d_stream( out )
00076 {}
00077
00078 virtual ~AlarmHandler()
00079 {
00080 #if FILE_METHODS
00081 if( d_file )
00082 fclose( d_file ) ;
00083 #endif
00084 }
00085
00098 virtual void handle_signal(int signum)
00099 {
00100 if (signum != SIGALRM)
00101 fprintf(stderr, "SIGALRM handler caught another signal!\n");
00102 exit(1);
00103 }
00104
00105 };
00106
00107 }
00108
00109 #endif