src/plugin.c: Change the write callbacks to receive a user_data_t pointer.
[collectd.git] / src / plugin.h
index 4f4a360..e58444f 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
  */
@@ -141,6 +136,20 @@ typedef struct notification_s
        notification_meta_t *meta;
 } notification_t;
 
+struct user_data_s
+{
+       void *data;
+       void (*free_func) (void *);
+};
+typedef struct user_data_s user_data_t;
+
+/*
+ * Callback types
+ */
+typedef int (*plugin_read_cb) (user_data_t *);
+typedef int (*plugin_write_cb) (const data_set_t *, const value_list_t *,
+               user_data_t *);
+
 /*
  * NAME
  *  plugin_set_dir
@@ -191,7 +200,7 @@ void plugin_shutdown_all (void);
  * DESCRIPTION
  *  Calls the write function of the given plugin with the provided data set and
  *  value list. It differs from `plugin_dispatch_value' in that it does not
- *  update the cache, does no do threshold checking, call the chain subsystem
+ *  update the cache, does not do threshold checking, call the chain subsystem
  *  and so on. It looks up the requested plugin and invokes the function, end
  *  of story.
  *
@@ -200,7 +209,7 @@ void plugin_shutdown_all (void);
  *             write functions.
  *  ds         Pointer to the data_set_t structure. If NULL, the data set is
  *             looked up according to the `type' member in the `vl' argument.
- *  vl         The actual value to be processes. Must not be NULL.
+ *  vl         The actual value to be processed. Must not be NULL.
  *
  * RETURN VALUE
  *  Returns zero upon success or non-zero if an error occurred. If `plugin' is
@@ -230,10 +239,10 @@ int plugin_register_init (const char *name,
                int (*callback) (void));
 int plugin_register_read (const char *name,
                int (*callback) (void));
+int plugin_register_complex_read (const char *name,
+               plugin_read_cb callback, user_data_t *user_data);
 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));
+               plugin_write_cb callback, user_data_t *user_data);
 int plugin_register_flush (const char *name,
                int (*callback) (const int timeout, const char *identifier));
 int plugin_register_shutdown (char *name,
@@ -248,8 +257,8 @@ int plugin_unregister_config (const char *name);
 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_complex_read (const char *name, void **user_data);
 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);
@@ -309,6 +318,6 @@ int plugin_notification_meta_add_boolean (notification_t *n,
 int plugin_notification_meta_copy (notification_t *dst,
     const notification_t *src);
 
-int plugin_notification_meta_free (notification_t *n);
+int plugin_notification_meta_free (notification_meta_t *n);
 
 #endif /* PLUGIN_H */