Code

core: Changed internal API to allow for per-plugin intervals.
[collectd.git] / src / varnish.c
index 37fd4bb3541f2181bd81dd1b379214bc9a6d4f03..2693b7c415d21c96f883e4d0458a9125f8383fb0 100644 (file)
@@ -158,7 +158,7 @@ static _Bool have_instance = 0;
 static int varnish_submit (const char *plugin_instance, /* {{{ */
                const char *category, const char *type, const char *type_instance, value_t value)
 {
-       value_list_t vl = VALUE_LIST_INIT;
+       value_list_t vl = VALUE_LIST_INIT (plugin_interval);
 
        vl.values = &value;
        vl.values_len = 1;
@@ -434,6 +434,7 @@ static int varnish_config_apply_default (user_config_t *conf) /* {{{ */
 static int varnish_init (void) /* {{{ */
 {
        user_config_t *conf;
+       struct timespec cb_interval;
        user_data_t ud;
 
        if (have_instance)
@@ -452,10 +453,12 @@ static int varnish_init (void) /* {{{ */
        ud.data = conf;
        ud.free_func = varnish_config_free;
 
+       CDTIME_T_TO_TIMESPEC (plugin_interval, &cb_interval);
+
        plugin_register_complex_read (/* group = */ "varnish",
                        /* name      = */ "varnish/localhost",
                        /* callback  = */ varnish_read,
-                       /* interval  = */ NULL,
+                       /* interval  = */ (plugin_interval > 0) ? &cb_interval : NULL,
                        /* user data = */ &ud);
 
        return (0);
@@ -466,6 +469,7 @@ static int varnish_config_instance (const oconfig_item_t *ci) /* {{{ */
        user_config_t *conf;
        user_data_t ud;
        char callback_name[DATA_MAX_NAME_LEN];
+       struct timespec cb_interval;
        int i;
 
        conf = malloc (sizeof (*conf));
@@ -559,13 +563,15 @@ static int varnish_config_instance (const oconfig_item_t *ci) /* {{{ */
        ssnprintf (callback_name, sizeof (callback_name), "varnish/%s",
                        (conf->instance == NULL) ? "localhost" : conf->instance);
 
+       CDTIME_T_TO_TIMESPEC (plugin_interval, &cb_interval);
+
        ud.data = conf;
        ud.free_func = varnish_config_free;
 
        plugin_register_complex_read (/* group = */ "varnish",
                        /* name      = */ callback_name,
                        /* callback  = */ varnish_read,
-                       /* interval  = */ NULL,
+                       /* interval  = */ (plugin_interval > 0) ? &cb_interval : NULL,
                        /* user data = */ &ud);
 
        have_instance = 1;
@@ -594,8 +600,9 @@ static int varnish_config (oconfig_item_t *ci) /* {{{ */
        return (0);
 } /* }}} int varnish_config */
 
-void module_register (void) /* {{{ */
+void module_register (plugin_loaddata_t *data) /* {{{ */
 {
+       PLUGIN_INIT_INTERVAL (data);
        plugin_register_complex_config ("varnish", varnish_config);
        plugin_register_init ("varnish", varnish_init);
 } /* }}} */