src/utils_threshold.c: Added creation of a notification.
[collectd.git] / src / plugin.h
index 72d8adb..96eb0cb 100644 (file)
 # 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
  */
@@ -63,6 +69,7 @@ struct value_list_s
        value_t *values;
        int      values_len;
        time_t   time;
+       int      interval;
        char     host[DATA_MAX_NAME_LEN];
        char     plugin[DATA_MAX_NAME_LEN];
        char     plugin_instance[DATA_MAX_NAME_LEN];
@@ -70,7 +77,8 @@ struct value_list_s
 };
 typedef struct value_list_s value_list_t;
 
-#define VALUE_LIST_INIT { NULL, 0, 0, "localhost", "", "", "" }
+#define VALUE_LIST_INIT { NULL, 0, 0, interval_g, "localhost", "", "", "" }
+#define VALUE_LIST_STATIC { NULL, 0, 0, 0, "localhost", "", "", "" }
 
 struct data_source_s
 {
@@ -95,6 +103,14 @@ typedef struct complain_s
        unsigned int delay;    /* how many more iterations we still need to wait */
 } complain_t;
 
+typedef struct notification_s
+{
+       int    severity;
+       char   message[NOTIF_MAX_MSG_LEN];
+       time_t time;
+       char   host[DATA_MAX_NAME_LEN];
+} notification_t;
+
 /*
  * NAME
  *  plugin_set_dir
@@ -158,6 +174,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);
@@ -167,6 +185,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);
 
 
 /*
@@ -186,12 +205,18 @@ int plugin_unregister_log (const char *name);
  */
 int plugin_dispatch_values (const char *name, value_list_t *vl);
 
+int plugin_dispatch_notification (const notification_t *notif);
+
 void plugin_log (int level, const char *format, ...);
 #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__)
+#if COLLECT_DEBUG
+# define DEBUG(...)  plugin_log (LOG_DEBUG,   __VA_ARGS__)
+#else /* COLLECT_DEBUG */
+# define DEBUG(...)  /* noop */
+#endif /* ! COLLECT_DEBUG */
 
 /* TODO: Move plugin_{complain,relief} into `utils_complain.[ch]'. -octo */
 void plugin_complain (int level, complain_t *c, const char *format, ...);