X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fplugin.h;h=91978bd93a7695256553c927d60f414b584d06d2;hb=48b794525072b1ff00a90497ef0bb1f4030510f4;hp=4ca6c771f16c8d87f050c499b4f367cf85b6b970;hpb=4320ac5ec142c87bcf634cd85b89eadea65011ff;p=collectd.git diff --git a/src/plugin.h b/src/plugin.h index 4ca6c771..91978bd9 100644 --- a/src/plugin.h +++ b/src/plugin.h @@ -45,6 +45,12 @@ # define LOG_DEBUG 7 #endif +#define NOTIF_MAX_MSG_LEN 256 + +#define NOTIF_FAILURE 1 +#define NOTIF_WARNING 2 +#define NOTIF_OKAY 4 + /* * Public data types */ @@ -91,11 +97,17 @@ struct data_set_s }; typedef struct data_set_s data_set_t; -typedef struct complain_s +typedef struct notification_s { - unsigned int interval; /* how long we wait for reporting this error again */ - unsigned int delay; /* how many more iterations we still need to wait */ -} complain_t; + int severity; + time_t time; + char message[NOTIF_MAX_MSG_LEN]; + char host[DATA_MAX_NAME_LEN]; + char plugin[DATA_MAX_NAME_LEN]; + char plugin_instance[DATA_MAX_NAME_LEN]; + char type[DATA_MAX_NAME_LEN]; + char type_instance[DATA_MAX_NAME_LEN]; +} notification_t; /* * NAME @@ -136,7 +148,7 @@ void plugin_set_dir (const char *dir); int plugin_load (const char *name); void plugin_init_all (void); -void plugin_read_all (const int *loop); +void plugin_read_all (void); void plugin_shutdown_all (void); /* @@ -160,6 +172,8 @@ int plugin_register_shutdown (char *name, int plugin_register_data_set (const data_set_t *ds); int plugin_register_log (char *name, void (*callback) (int, const char *)); +int plugin_register_notification (const char *name, + int (*callback) (const notification_t *notif)); int plugin_unregister_config (const char *name); int plugin_unregister_complex_config (const char *name); @@ -169,6 +183,7 @@ int plugin_unregister_write (const char *name); int plugin_unregister_shutdown (const char *name); int plugin_unregister_data_set (const char *name); int plugin_unregister_log (const char *name); +int plugin_unregister_notification (const char *name); /* @@ -188,16 +203,20 @@ int plugin_unregister_log (const char *name); */ int plugin_dispatch_values (const char *name, value_list_t *vl); -void plugin_log (int level, const char *format, ...); +int plugin_dispatch_notification (const notification_t *notif); + +void plugin_log (int level, const char *format, ...) + __attribute__ ((format(printf,2,3))); + #define ERROR(...) plugin_log (LOG_ERR, __VA_ARGS__) #define WARNING(...) plugin_log (LOG_WARNING, __VA_ARGS__) #define NOTICE(...) plugin_log (LOG_NOTICE, __VA_ARGS__) #define INFO(...) plugin_log (LOG_INFO, __VA_ARGS__) -#define DEBUG(...) plugin_log (LOG_DEBUG, __VA_ARGS__) - -/* TODO: Move plugin_{complain,relief} into `utils_complain.[ch]'. -octo */ -void plugin_complain (int level, complain_t *c, const char *format, ...); -void plugin_relief (int level, complain_t *c, const char *format, ...); +#if COLLECT_DEBUG +# define DEBUG(...) plugin_log (LOG_DEBUG, __VA_ARGS__) +#else /* COLLECT_DEBUG */ +# define DEBUG(...) /* noop */ +#endif /* ! COLLECT_DEBUG */ const data_set_t *plugin_get_ds (const char *name);