daemon_application.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _DAEMON_APPLICATION_H_
00023 #define _DAEMON_APPLICATION_H_
00024
00025 #include <string>
00026
00027 #include <dcl/application.h>
00028
00029 namespace dbp {
00030
00032
00035 namespace log_level {
00036 enum log_level {
00038 error,
00040 warning,
00042 info
00043 };
00044 }
00045
00047
00051 class daemon_application_int: public application_int {
00052 public:
00054 typedef delegate0<void> on_reload_configuration_handler;
00056 typedef delegate0<void> on_pause_handler;
00058 typedef delegate0<void> on_resume_handler;
00060 typedef delegate0<void> on_terminate_handler;
00062
00070 virtual void log(const std::string &message,
00071 log_level::log_level level = log_level::info) = 0;
00073
00081 virtual void on_reload_configuration(on_reload_configuration_handler handler) = 0;
00083
00091 virtual void on_pause(on_pause_handler handler) = 0;
00093
00101 virtual void on_resume(on_resume_handler handler) = 0;
00103
00110 virtual void on_terminate(on_terminate_handler handler) = 0;
00111 };
00112
00114
00118 class daemon_application: public daemon_application_int,
00119 public singleton<daemon_application> {
00120 friend class singleton<daemon_application>;
00121 public:
00122 virtual void set_name(const std::string &name) {
00123 pimpl->set_name(name);
00124 };
00125 virtual void set_description(const std::string &description) {
00126 pimpl->set_description(description);
00127 };
00128 virtual void register_cmdline_parameter(const cmdline_parameter ¶m,
00129 cmdline_parameter_handler handler) {
00130 pimpl->register_cmdline_parameter(param, handler);
00131 };
00132 virtual void on_execute(on_execute_handler handler) {
00133 pimpl->on_execute(handler);
00134 };
00135 virtual void on_exception(on_exception_handler handler) {
00136 pimpl->on_exception(handler);
00137 };
00138 virtual int run(int argc, char *argv[]) {
00139 return pimpl->run(argc, argv);
00140 };
00141 virtual void log(const std::string &message,
00142 log_level::log_level level = log_level::info) {
00143 pimpl->log(message, level);
00144 };
00145 virtual void on_reload_configuration(on_reload_configuration_handler handler) {
00146 pimpl->on_reload_configuration(handler);
00147 };
00148 virtual void on_pause(on_pause_handler handler) {
00149 pimpl->on_pause(handler);
00150 };
00151 virtual void on_resume(on_resume_handler handler) {
00152 pimpl->on_resume(handler);
00153 };
00154 virtual void on_terminate(on_terminate_handler handler) {
00155 pimpl->on_terminate(handler);
00156 };
00157 protected:
00158 daemon_application();
00159 private:
00160 daemon_application_int *pimpl;
00161 };
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185 }
00186
00187 #endif