diff --git a/src/plugin.h b/src/plugin.h
index 8749327ab8cc900b9c6030c4a64c5d213e922d7f..107078e7ca6e75909d3ecd6559749a37575009e8 100644 (file)
--- a/src/plugin.h
+++ b/src/plugin.h
+#ifndef PLUGIN_H
+#define PLUGIN_H
+
/**
* collectd - src/plugin.h
/**
* collectd - src/plugin.h
- * Copyright (C) 2005 Florian octo Forster
+ * Copyright (C) 2005,2006 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
*
* 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
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
+ * Free Software Foundation; only version 2 of the License is applicable.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* Florian octo Forster <octo at verplant.org>
**/
* Florian octo Forster <octo at verplant.org>
**/
-#ifndef PLUGIN_H
-#define PLUGIN_H
+#define DATA_MAX_NAME_LEN 64
+
+#define DS_TYPE_COUNTER 0
+#define DS_TYPE_GAUGE 1
+
+/*
+ * Public data types
+ */
+typedef unsigned long long counter_t;
+typedef double gauge_t;
+
+union value_u
+{
+ counter_t counter;
+ gauge_t gauge;
+};
+typedef union value_u value_t;
+
+struct value_list_s
+{
+ value_t *values;
+ int values_len;
+ time_t time;
+ char host[DATA_MAX_NAME_LEN];
+ char plugin[DATA_MAX_NAME_LEN];
+ char plugin_instance[DATA_MAX_NAME_LEN];
+ char type_instance[DATA_MAX_NAME_LEN];
+};
+typedef struct value_list_s value_list_t;
+
+#define VALUE_LIST_INIT { NULL, 0, 0, "localhost", "", "", "" }
+
+struct data_source_s
+{
+ char name[DATA_MAX_NAME_LEN];
+ int type;
+ double min;
+ double max;
+};
+typedef struct data_source_s data_source_t;
+
+struct data_set_s
+{
+ char type[DATA_MAX_NAME_LEN];
+ int ds_num;
+ data_source_t *ds;
+};
+typedef struct data_set_s data_set_t;
+
+typedef struct complain_s
+{
+ unsigned int interval; /* how long we wait for reporting this error again */
+ unsigned int delay; /* how many more iterations we still need to wait */
+} complain_t;
+
+extern char hostname[DATA_MAX_NAME_LEN];
/*
* NAME
/*
* NAME
* NOTES
* If `dir' is NULL the compiled in default `PLUGINDIR' is used.
*/
* NOTES
* If `dir' is NULL the compiled in default `PLUGINDIR' is used.
*/
-void plugin_set_dir (char *dir);
-
-/*
- * NAME
- * plugin_count
- *
- * DESCRIPTION
- * trivial
- *
- * RETURN VALUE
- * The number of currently loaded plugins
- */
-int plugin_count (void);
-
-/*
- * NAME
- * plugin_exists
- *
- * DESCRIPTION
- * trivial
- *
- * ARGUMENTS
- * `type' Name of the plugin.
- *
- * RETURN VALUE
- * Returns non-zero if a plugin with the name $type is found and zero
- * otherwise.
- */
-int plugin_exists (char *type);
+void plugin_set_dir (const char *dir);
/*
* NAME
/*
* NAME
* NOTES
* No attempt is made to re-load an already loaded module.
*/
* NOTES
* No attempt is made to re-load an already loaded module.
*/
-int plugin_load (const char *type);
+int plugin_load (const char *name);
-int plugin_load_all (char *dir);
void plugin_init_all (void);
void plugin_init_all (void);
-void plugin_read_all (void);
+void plugin_read_all (const int *loop);
+void plugin_shutdown_all (void);
+
+/*
+ * The `plugin_register_*' functions are used to make `config', `init',
+ * `read', `write' and `shutdown' functions known to the plugin
+ * infrastructure. Also, the data-formats are made public like this.
+ */
+int plugin_register_config (const char *name,
+ int (*callback) (const char *key, const char *val),
+ const char **keys, int keys_num);
+int plugin_register_init (const char *name,
+ int (*callback) (void));
+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_shutdown (char *name,
+ int (*callback) (void));
+int plugin_register_data_set (const data_set_t *ds);
-void plugin_register (char *type,
- void (*init) (void),
- void (*read) (void),
- void (*write) (char *, char *, char *));
+/*
+ * NAME
+ * plugin_dispatch_values
+ *
+ * DESCRIPTION
+ * This function is called by reading processes with the values they've
+ * aquired. The function fetches the data-set definition (that has been
+ * registered using `plugin_register_data_set') and calls _all_ registered
+ * write-functions.
+ *
+ * ARGUMENTS
+ * `name' Name/type of the data-set that describe the values in `vl'.
+ * `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);
-#ifdef HAVE_LIBRRD
-void plugin_write (char *host, char *type, char *inst, char *val);
-#endif /* HAVE_LIBRRD */
-void plugin_submit (char *type, char *inst, char *val);
+/* TODO: Move plugin_{complain,relief} into `utils_complain.[ch]'. -octo */
+void plugin_complain (int level, complain_t *c, const char *format, ...);
+void plugin_relief (int level, complain_t *c, const char *format, ...);
#endif /* PLUGIN_H */
#endif /* PLUGIN_H */