X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcommon.h;h=8a7d986534919efa65e449c17313882f363cce93;hb=5131a49ad0584aa22282aacf72b6e4ca75356bae;hp=6b11b538db8a69ef001e7e7b28843d519d9ebe6b;hpb=9e7b3a035836474cb4af253b248de30d5eb97f4d;p=collectd.git diff --git a/src/common.h b/src/common.h index 6b11b538..8a7d9865 100644 --- a/src/common.h +++ b/src/common.h @@ -47,6 +47,14 @@ || (strcasecmp ("no", (s)) == 0) \ || (strcasecmp ("off", (s)) == 0)) +struct rate_to_value_state_s +{ + value_t last_value; + cdtime_t last_time; + gauge_t residual; +}; +typedef struct rate_to_value_state_s rate_to_value_state_t; + char *sstrncpy (char *dest, const char *src, size_t n); int ssnprintf (char *dest, size_t n, const char *format, ...); char *sstrdup(const char *s); @@ -292,6 +300,15 @@ int read_file_contents (const char *filename, char *buf, int bufsize); counter_t counter_diff (counter_t old_value, counter_t new_value); +/* Convert a rate back to a value_t. When converting to a derive_t, counter_t + * or absoltue_t, take fractional residuals into account. This is important + * when scaling counters, for example. + * Returns zero on success. Returns EAGAIN when called for the first time; in + * this case the value_t is invalid and the next call should succeed. Other + * return values indicate an error. */ +int rate_to_value (value_t *ret_value, gauge_t rate, + rate_to_value_state_t *state, int ds_type, cdtime_t t); + /* Converts a service name (a string) to a port number * (in the range [1-65535]). Returns less than zero on error. */ int service_name_to_port_number (const char *service_name);