summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 7e870aa)
raw | patch | inline | side by side (parent: 7e870aa)
author | Florian Forster <octo@huhu.verplant.org> | |
Mon, 24 Mar 2008 09:42:03 +0000 (10:42 +0100) | ||
committer | Florian Forster <octo@huhu.verplant.org> | |
Mon, 24 Mar 2008 09:42:03 +0000 (10:42 +0100) |
src/utils_cache.c | patch | blob | history | |
src/utils_cache.h | patch | blob | history |
diff --git a/src/utils_cache.c b/src/utils_cache.c
index d1dd027113f0692fe895d34604306bbe22bae591..7258ffbe2084627adf8eeafb4158fb55e43933be 100644 (file)
--- a/src/utils_cache.c
+++ b/src/utils_cache.c
/**
* collectd - src/utils_cache.c
- * Copyright (C) 2007 Florian octo Forster
+ * Copyright (C) 2007,2008 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
return (ret);
} /* gauge_t *uc_get_rate */
+int uc_get_names (char ***ret_names, size_t *ret_names_num)
+{
+ c_avl_iterator_t *iter;
+ char *key;
+ void *value;
+
+ char **names = NULL;
+ size_t names_num = 0;
+
+ int status = 0;
+
+ pthread_mutex_lock (&cache_lock);
+
+ iter = c_avl_get_iterator (cache_tree);
+ while (c_avl_iterator_next (iter, (void *) &key, &value) == 0)
+ {
+ char **temp;
+
+ temp = (char **) realloc (names, sizeof (char *) * (names_num + 1));
+ if (temp == NULL)
+ {
+ status = -1;
+ break;
+ }
+ names = temp;
+ names[names_num] = strdup (key);
+ if (names[names_num] == NULL)
+ {
+ status = -1;
+ break;
+ }
+ names_num++;
+ }
+
+ c_avl_iterator_destroy (iter);
+ pthread_mutex_unlock (&cache_lock);
+
+ if (status != 0)
+ {
+ int i;
+
+ for (i = 0; i < names_num; i++)
+ {
+ sfree (names[i]);
+ }
+ sfree (names);
+
+ return (-1);
+ }
+
+ *ret_names = names;
+ *ret_names_num = names_num;
+
+ return (0);
+} /* int uc_get_names */
+
int uc_get_state (const data_set_t *ds, const value_list_t *vl)
{
char name[6 * DATA_MAX_NAME_LEN];
diff --git a/src/utils_cache.h b/src/utils_cache.h
index 9b6972afdb6a17099391038e89ecf7b4985374eb..d02ad43f0897dc9a2397a6458b2fbc621abd5aef 100644 (file)
--- a/src/utils_cache.h
+++ b/src/utils_cache.h
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);
+int uc_get_names (char ***ret_names, size_t *ret_names_num);
+
int uc_get_state (const data_set_t *ds, const value_list_t *vl);
int uc_set_state (const data_set_t *ds, const value_list_t *vl, int state);