X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fplugin.h;h=b90811cf93cc5c98e99fc090e588a28bce18dc63;hb=576d966de9a98aacd1a2740abb349022cc32d913;hp=ac389c6a8d3fc0feac891da8b66b1b6b4b025498;hpb=4e6812d3e5073e5b4bd7eaef9f2539c8c9dd28a4;p=collectd.git diff --git a/src/plugin.h b/src/plugin.h index ac389c6a..b90811cf 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 */ @@ -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 */