X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fplugin.h;h=45e9b494fc60634b568ee6a7f0d9bc4bc263656f;hb=f807d67073930df2240b60c5d20c863f6e32e915;hp=8dd56ae31a1f6202fd6a082641454e04e32801e6;hpb=cb6332462ef3ec2375542783df453e8301d7f185;p=collectd.git diff --git a/src/plugin.h b/src/plugin.h index 8dd56ae3..45e9b494 100644 --- a/src/plugin.h +++ b/src/plugin.h @@ -1,6 +1,9 @@ +#ifndef PLUGIN_H +#define 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 @@ -20,21 +23,115 @@ * Florian octo Forster **/ -#ifndef PLUGIN_H -#define PLUGIN_H +/* + * + */ +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; + +/* + * NAME + * plugin_set_dir + * + * DESCRIPTION + * Sets the current `plugindir' + * + * ARGUMENTS + * `dir' Path to the plugin directory + * + * NOTES + * If `dir' is NULL the compiled in default `PLUGINDIR' is used. + */ +void plugin_set_dir (const 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); + +/* + * NAME + * plugin_load + * + * DESCRIPTION + * Searches the current `plugindir' (see `plugin_set_dir') for the plugin + * named $type and loads it. Afterwards the plugin's `module_register' + * function is called, which then calls `plugin_register' to register callback + * functions. + * + * ARGUMENTS + * `type' Name of the plugin to load. + * + * RETURN VALUE + * Returns zero upon success, a value greater than zero if no plugin was found + * and a value below zero if an error occurs. + * + * NOTES + * No attempt is made to re-load an already loaded module. + */ +int plugin_load (const char *type); int plugin_load_all (char *dir); void plugin_init_all (void); -void plugin_read_all (void); +void plugin_read_all (const int *loop); + +void plugin_shutdown_all (void); -int plugin_exists (char *type); void plugin_register (char *type, void (*init) (void), void (*read) (void), void (*write) (char *, char *, char *)); -#ifdef HAVE_LIBRRD + +int plugin_register_shutdown (char *, void (*) (void)); + +/* + * NAME + * plugin_write + * + * DESCRIPTION + * Searches the plugin for `type' in the plugin-list. If found, and a `write' + * function is registered, it's called. If either the plugin is not found or + * the plugin doesn't provide a `write' function this function will return + * without further notice. + * + * ARGUMENTS + * `host' Host(name) from which the data originates. + * `type' Name of the plugin. + * `inst' Instance (passed to the plugin's `write' function. + * `val' Values for the RRD files. Also passed to the plugin. + */ void plugin_write (char *host, char *type, char *inst, char *val); -#endif /* HAVE_LIBRRD */ + void plugin_submit (char *type, char *inst, char *val); + +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 */