Merge branch 'collectd-4.5'
[collectd.git] / src / plugin.h
index ac389c6..b90811c 100644 (file)
 #define NOTIF_WARNING 2
 #define NOTIF_OKAY    4
 
+#define FILTER_NOWRITE 1
+#define FILTER_NOTHRESHOLD_CHECK 2
+/* FILTER_IGNORE has to equal the bitwise or of all other filter flags */
+#define FILTER_IGNORE (FILTER_NOWRITE | FILTER_NOTHRESHOLD_CHECK)
+
 /*
  * Public data types
  */
@@ -99,6 +104,30 @@ struct data_set_s
 };
 typedef struct data_set_s data_set_t;
 
+enum notification_meta_type_e
+{
+       NM_TYPE_STRING,
+       NM_TYPE_SIGNED_INT,
+       NM_TYPE_UNSIGNED_INT,
+       NM_TYPE_DOUBLE,
+       NM_TYPE_BOOLEAN
+};
+
+typedef struct notification_meta_s
+{
+       char name[DATA_MAX_NAME_LEN];
+       enum notification_meta_type_e type;
+       union
+       {
+               const char *value_string;
+               int64_t value_signed_int;
+               uint64_t value_unsigned_int;
+               double value_double;
+               bool value_boolean;
+       };
+       struct notification_meta_s *next;
+} notification_meta_t;
+
 typedef struct notification_s
 {
        int    severity;
@@ -109,6 +138,7 @@ typedef struct notification_s
        char   plugin_instance[DATA_MAX_NAME_LEN];
        char   type[DATA_MAX_NAME_LEN];
        char   type_instance[DATA_MAX_NAME_LEN];
+       notification_meta_t *meta;
 } notification_t;
 
 /*
@@ -153,8 +183,6 @@ void plugin_init_all (void);
 void plugin_read_all (void);
 void plugin_shutdown_all (void);
 
-void plugin_flush_all (int timeout);
-int plugin_flush_one (int timeout, const char *name);
 int plugin_flush (const char *plugin, int timeout, const char *identifier);
 
 /*
@@ -173,6 +201,8 @@ int plugin_register_read (const char *name,
                int (*callback) (void));
 int plugin_register_write (const char *name,
                int (*callback) (const data_set_t *ds, const value_list_t *vl));
+int plugin_register_filter (const char *name,
+               int (*callback) (const data_set_t *ds, value_list_t *vl));
 int plugin_register_flush (const char *name,
                int (*callback) (const int timeout, const char *identifier));
 int plugin_register_shutdown (char *name,
@@ -188,6 +218,7 @@ int plugin_unregister_complex_config (const char *name);
 int plugin_unregister_init (const char *name);
 int plugin_unregister_read (const char *name);
 int plugin_unregister_write (const char *name);
+int plugin_unregister_filter (const char *name);
 int plugin_unregister_flush (const char *name);
 int plugin_unregister_shutdown (const char *name);
 int plugin_unregister_data_set (const char *name);
@@ -213,7 +244,9 @@ int plugin_dispatch_values (value_list_t *vl);
 
 int plugin_dispatch_notification (const notification_t *notif);
 
-void plugin_log (int level, const char *format, ...);
+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__)
@@ -226,4 +259,25 @@ void plugin_log (int level, const char *format, ...);
 
 const data_set_t *plugin_get_ds (const char *name);
 
+int plugin_notification_meta_add_string (notification_t *n,
+    const char *name,
+    const char *value);
+int plugin_notification_meta_add_signed_int (notification_t *n,
+    const char *name,
+    int64_t value);
+int plugin_notification_meta_add_unsigned_int (notification_t *n,
+    const char *name,
+    uint64_t value);
+int plugin_notification_meta_add_double (notification_t *n,
+    const char *name,
+    double value);
+int plugin_notification_meta_add_boolean (notification_t *n,
+    const char *name,
+    bool value);
+
+int plugin_notification_meta_copy (notification_t *dst,
+    const notification_t *src);
+
+int plugin_notification_meta_free (notification_t *n);
+
 #endif /* PLUGIN_H */