X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fdaemon%2Futils_cache.h;h=6c6a883cc903190077a6f937e167ab3552e728a6;hb=290741f2e6de9e9b467463c1f0c6f031c4036428;hp=ea3eb2f4db8342de2d85daef48271fe265024992;hpb=ea3a86f0ff50f12650aae7eea033984a8ae0eba5;p=collectd.git diff --git a/src/daemon/utils_cache.h b/src/daemon/utils_cache.h index ea3eb2f4..6c6a883c 100644 --- a/src/daemon/utils_cache.h +++ b/src/daemon/utils_cache.h @@ -1,6 +1,7 @@ /** * collectd - src/utils_cache.h * Copyright (C) 2007 Florian octo Forster + * Copyright (C) 2016 Sebastian tokkee Harl * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -22,6 +23,7 @@ * * Authors: * Florian octo Forster + * Sebastian tokkee Harl **/ #ifndef UTILS_CACHE_H @@ -40,7 +42,7 @@ int uc_update (const data_set_t *ds, const value_list_t *vl); int uc_get_rate_by_name (const char *name, gauge_t **ret_values, size_t *ret_values_num); gauge_t *uc_get_rate (const data_set_t *ds, const value_list_t *vl); -size_t uc_get_size(); +size_t uc_get_size (void); int uc_get_names (char ***ret_names, cdtime_t **ret_times, size_t *ret_number); int uc_get_state (const data_set_t *ds, const value_list_t *vl); @@ -55,6 +57,53 @@ int uc_get_history_by_name (const char *name, gauge_t *ret_history, size_t num_steps, size_t num_ds); /* + * Iterator interface + */ +struct uc_iter_s; +typedef struct uc_iter_s uc_iter_t; + +/* + * NAME + * uc_get_iterator + * + * DESCRIPTION + * Create an iterator for the cache. It will hold the cache lock until it's + * destroyed. + * + * RETURN VALUE + * An iterator object on success or NULL else. + */ +uc_iter_t *uc_get_iterator (void); + +/* + * NAME + * uc_iterator_next + * + * DESCRIPTION + * Advance the iterator to the next positiion and (optionally) returns the + * name of the entry. + * + * PARAMETERS + * `iter' The iterator object to advance. + * `ret_name' Pointer to a string where to store the name. The returned + * value is a copy of the value and has to be freed by the + * caller. + * + * RETURN VALUE + * Zero upon success or non-zero if the iterator ie NULL or no further + * values are available. + */ +int uc_iterator_next (uc_iter_t *iter, char **ret_name); +void uc_iterator_destroy (uc_iter_t *iter); + +/* Return the timestamp of the value at the current position. */ +int uc_iterator_get_time (uc_iter_t *iter, cdtime_t *ret_time); +/* Return the (raw) value at the current position. */ +int uc_iterator_get_values (uc_iter_t *iter, value_t **ret_values, size_t *ret_num); +/* Return the interval of the value at the current position. */ +int uc_iterator_get_interval (uc_iter_t *iter, cdtime_t *ret_interval); + +/* * Meta data interface */ int uc_meta_data_exists (const value_list_t *vl, const char *key);