diff options
author | Ben Summers <ben@fluffy.co.uk> | 2005-10-14 08:50:54 +0000 |
---|---|---|
committer | Ben Summers <ben@fluffy.co.uk> | 2005-10-14 08:50:54 +0000 |
commit | 99f8ce096bc5569adbfea1911dbcda24c28d8d8b (patch) | |
tree | 049c302161fea1f2f6223e1e8f3c40d9e8aadc8b /lib/server/Daemon.h |
Box Backup 0.09 with a few tweeks
Diffstat (limited to 'lib/server/Daemon.h')
-rwxr-xr-x | lib/server/Daemon.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/lib/server/Daemon.h b/lib/server/Daemon.h new file mode 100755 index 00000000..a7b9488b --- /dev/null +++ b/lib/server/Daemon.h @@ -0,0 +1,75 @@ +// -------------------------------------------------------------------------- +// +// File +// Name: Daemon.h +// Purpose: Basic daemon functionality +// Created: 2003/07/29 +// +// -------------------------------------------------------------------------- + +/* NOTE: will log to local6: include a line like + local6.info /var/log/box + in /etc/syslog.conf +*/ + + +#ifndef DAEMON__H +#define DAEMON__H + +class Configuration; +class ConfigurationVerify; + +// -------------------------------------------------------------------------- +// +// Class +// Name: Daemon +// Purpose: Basic daemon functionality +// Created: 2003/07/29 +// +// -------------------------------------------------------------------------- +class Daemon +{ +public: + Daemon(); + virtual ~Daemon(); +private: + Daemon(const Daemon &rToCopy); +public: + + int Main(const char *DefaultConfigFile, int argc, const char *argv[]); + + virtual void Run(); + const Configuration &GetConfiguration() const; + + virtual const char *DaemonName() const; + virtual const char *DaemonBanner() const; + virtual const ConfigurationVerify *GetConfigVerify() const; + + bool StopRun() {return mReloadConfigWanted | mTerminateWanted;} + bool IsReloadConfigWanted() {return mReloadConfigWanted;} + bool IsTerminateWanted() {return mTerminateWanted;} + + // To allow derived classes to get these signals in other ways + void SetReloadConfigWanted() {mReloadConfigWanted = true;} + void SetTerminateWanted() {mTerminateWanted = true;} + + virtual void SetupInInitialProcess(); + virtual void EnterChild(); + + static void SetProcessTitle(const char *format, ...); + +private: + static void SignalHandler(int sigraised); + +private: + Configuration *mpConfiguration; + bool mReloadConfigWanted; + bool mTerminateWanted; + static Daemon *spDaemon; +}; + +#define DAEMON_VERIFY_SERVER_KEYS {"PidFile", 0, ConfigTest_Exists, 0}, \ + {"User", 0, ConfigTest_LastEntry, 0} + +#endif // DAEMON__H + |