// // Linux Daemon // /* prevent multiple inclusions */ #ifndef __Daemon__ #define __Daemon__ /* includes *****************************************************************/ #include #include #include #include #include "LogData.h" /* defines ******************************************************************/ /* macros *******************************************************************/ /* structs & typedefs *******************************************************/ /* c class definitions ******************************************************/ class Daemon { // public data public: // protected data protected: // private data private: char m_name[32]; bool m_debug; int m_pid; // public methods public: // constructors Daemon(); Daemon( const char *name, int debug, int noclose ); // destructor virtual ~Daemon(); // public methods int Daemonize( const char *name, int debug=0, int noclose=0 ); void Die( int code ); void SetDebug(bool debug) {m_debug = debug;}; bool GetDebug(void) {return m_debug;}; bool IsDebug(void) {return m_debug;}; void Dprintf( const char *fmt, ... ); void SetName(const char *s) {strncpy(m_name,s,sizeof(m_name)-1);}; char *GetName(void) {return m_name;}; int GetPid(void) {return m_pid;}; // virtual functions virtual void DaemonStartup(void) {}; virtual void DaemonShutdown(void) {}; virtual void DaemonReload(void) {}; // exceptions class DaemonException { char *toString(void) { return strerror(errno); }; }; // static methods to override static int SignalAlarm(void) {return 1;}; static int SignalDeath(void) {return 1;}; static int SignalInterrupt(void) {return 1;}; static void SignalHup(void) {;}; // private methods private: // signal catchers (do not override) static void signal_alarm(int signum); static void signal_child(int signum); static void signal_death(int signum); static void signal_intrp(int signum); static void signal_hup(int signum); }; #endif