Go to the documentation of this file.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 DAEMONAPPLICATION_H
00027 #define DAEMONAPPLICATION_H
00028
00029 #include "CoreApplication.h"
00030 #include "Leds.h"
00031 #include "Log.h"
00032 #include "GpCoreToolsDLLExport.h"
00033
00034 namespace GpCoreTools {
00035
00036 class GPCORETOOLS_EXPORT DaemonApplication : public CoreApplication
00037 {
00038 public:
00039 DaemonApplication(int & argc, char ** argv, ApplicationHelp * ( *help) (), bool reportBugs=true);
00040 ~DaemonApplication();
00041
00042 virtual void close();
00043
00044 void fork();
00045 void start();
00046 const std::string& basePath() const {return _basePath;}
00047 protected:
00048 virtual void parentProcessWait() {};
00049 virtual void installInterruptSignals();
00050 static void childInterrupted(int signum);
00051 static void parentInterrupted(int signum);
00052 private:
00053 void checkPidFile();
00054 void writePidFile(pid_t pid);
00055 void checkBasePath();
00056 void initLogFile();
00057 void showHelp(int& i, int argc, char ** argv, ApplicationHelp * ( *help) ());
00058 void setHelp(ApplicationHelp * h);
00059
00060 static std::string pidFile(const char * applicationName);
00061
00062 bool _doFork;
00063 std::string _basePath, _logFileName;
00064 Log _log;
00065 Leds * _leds;
00066 };
00067
00068 }
00069
00070 #endif // DAEMONAPPLICATION_H