X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fplugin.h;h=a6f89a0ec37697ef11c61ffdc03312494aa06e22;hb=b5cac450499d563e64a499082866acf846200410;hp=3bf7e4c1d01174f5f95671f9fd1ea6ed9943eeeb;hpb=148e8732e45435a051df1c3673cad0d5dc77492f;p=collectd.git diff --git a/src/plugin.h b/src/plugin.h index 3bf7e4c1..a6f89a0e 100644 --- a/src/plugin.h +++ b/src/plugin.h @@ -52,6 +52,11 @@ #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 */ @@ -114,12 +119,12 @@ typedef struct notification_meta_s 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; - }; + const char *nm_string; + int64_t nm_signed_int; + uint64_t nm_unsigned_int; + double nm_double; + bool nm_boolean; + } nm_value; struct notification_meta_s *next; } notification_meta_t; @@ -178,8 +183,36 @@ 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); +/* + * NAME + * plugin_write + * + * 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 + * and so on. It looks up the requested plugin and invokes the function, end + * of story. + * + * ARGUMENTS + * plugin Name of the plugin. If NULL, the value is sent to all registered + * 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. + * + * RETURN VALUE + * Returns zero upon success or non-zero if an error occurred. If `plugin' is + * NULL and more than one plugin is called, an error is only returned if *all* + * plugins fail. + * + * NOTES + * This is the function used by the `write' built-in target. May be used by + * other target plugins. + */ +int plugin_write (const char *plugin, + const data_set_t *ds, const value_list_t *vl); + int plugin_flush (const char *plugin, int timeout, const char *identifier); /* @@ -198,6 +231,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, @@ -213,6 +248,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);