X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fplugin.h;h=96eb0cb5633cf1cbe5fe6153b176f46040b49c5e;hb=302974149068eeca34e747bed1233d2bb8948a5d;hp=0164e9cf9a2d032bf5c5bf683c64db756047cda2;hpb=2f0dfdda8bc499fdb161c6a5850ec176e75bd4fa;p=collectd.git diff --git a/src/plugin.h b/src/plugin.h index 0164e9cf..96eb0cb5 100644 --- a/src/plugin.h +++ b/src/plugin.h @@ -1,9 +1,8 @@ #ifndef PLUGIN_H #define PLUGIN_H - /** * collectd - src/plugin.h - * Copyright (C) 2005,2006 Florian octo Forster + * Copyright (C) 2005-2007 Florian octo Forster * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -22,6 +21,9 @@ * Florian octo Forster **/ +#include "collectd.h" +#include "configfile.h" + #define DATA_MAX_NAME_LEN 64 #define DS_TYPE_COUNTER 0 @@ -43,18 +45,15 @@ # 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 */ -enum modreg -{ - MR_EVERYTHING = 7, - MR_DATASETS = 1, - MR_READ = 2, - MR_WRITE = 4 -}; -typedef enum modreg modreg_e; - typedef unsigned long long counter_t; typedef double gauge_t; @@ -70,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]; @@ -77,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 { @@ -102,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 @@ -138,7 +147,7 @@ void plugin_set_dir (const char *dir); * NOTES * No attempt is made to re-load an already loaded module. */ -int plugin_load (const char *name, modreg_e mr); +int plugin_load (const char *name); void plugin_init_all (void); void plugin_read_all (const int *loop); @@ -152,6 +161,8 @@ void plugin_shutdown_all (void); int plugin_register_config (const char *name, int (*callback) (const char *key, const char *val), const char **keys, int keys_num); +int plugin_register_complex_config (const char *type, + int (*callback) (oconfig_item_t *)); int plugin_register_init (const char *name, int (*callback) (void)); int plugin_register_read (const char *name, @@ -163,14 +174,19 @@ 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); int plugin_unregister_init (const char *name); int plugin_unregister_read (const char *name); 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); + /* * NAME @@ -187,14 +203,20 @@ int plugin_unregister_log (const char *name); * `vl' Value list of the values that have been read by a `read' * function. */ -int plugin_dispatch_values (const char *name, const value_list_t *vl); +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, ...);