X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Frrdcached.c;h=0a9803599520425bd3c640abf5ec1141939379e2;hb=7285e5f59ffa4efb391485fe9b35ee02f3dc856f;hp=3731d01084eb5ee8a4137bb09ca361ccc6230635;hpb=ee74dd28301740b9b6f816bff3a2dbaa601953c4;p=collectd.git diff --git a/src/rrdcached.c b/src/rrdcached.c index 3731d010..0a980359 100644 --- a/src/rrdcached.c +++ b/src/rrdcached.c @@ -46,7 +46,9 @@ static rrdcreate_config_t rrdcreate_config = /* timespans_num = */ 0, /* consolidation_functions = */ NULL, - /* consolidation_functions_num = */ 0 + /* consolidation_functions_num = */ 0, + + /* async = */ 0 }; /* @@ -176,6 +178,29 @@ static int rc_config_get_int_positive (oconfig_item_t const *ci, int *ret) return (0); } /* int rc_config_get_int_positive */ +static int rc_config_get_xff (oconfig_item_t const *ci, double *ret) +{ + double value; + + if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_NUMBER)) + { + ERROR ("rrdcached plugin: The \"%s\" needs exactly one numeric argument " + "in the range [0.0, 1.0)", ci->key); + return (EINVAL); + } + + value = ci->values[0].value.number; + if ((value >= 0.0) && (value < 1.0)) + { + *ret = value; + return (0); + } + + ERROR ("rrdcached plugin: The \"%s\" needs exactly one numeric argument " + "in the range [0.0, 1.0)", ci->key); + return (EINVAL); +} /* int rc_config_get_xff */ + static int rc_config_add_timespan (int timespan) { int *tmp; @@ -227,10 +252,18 @@ static int rc_config (oconfig_item_t *ci) status = cf_util_get_string (child, &daemon_address); else if (strcasecmp ("CreateFiles", key) == 0) status = cf_util_get_boolean (child, &config_create_files); + else if (strcasecmp ("CreateFilesAsync", key) == 0) + status = cf_util_get_boolean (child, &rrdcreate_config.async); else if (strcasecmp ("CollectStatistics", key) == 0) status = cf_util_get_boolean (child, &config_collect_stats); else if (strcasecmp ("StepSize", key) == 0) - status = rc_config_get_int_positive (child, &rrdcreate_config.stepsize); + { + int tmp = -1; + + status = rc_config_get_int_positive (child, &tmp); + if (status == 0) + rrdcreate_config.stepsize = (unsigned long) tmp; + } else if (strcasecmp ("HeartBeat", key) == 0) status = rc_config_get_int_positive (child, &rrdcreate_config.heartbeat); else if (strcasecmp ("RRARows", key) == 0) @@ -242,6 +275,8 @@ static int rc_config (oconfig_item_t *ci) if (status == 0) status = rc_config_add_timespan (tmp); } + else if (strcasecmp ("XFF", key) == 0) + status = rc_config_get_xff (child, &rrdcreate_config.xff); else { WARNING ("rrdcached plugin: Ignoring invalid option %s.", key); @@ -428,6 +463,8 @@ static int rc_write (const data_set_t *ds, const value_list_t *vl, filename); return (-1); } + else if (rrdcreate_config.async) + return (0); } }