/**
* collectd - src/utils_cms_putval.c
- * Copyright (C) 2007,2008 Florian octo Forster
+ * Copyright (C) 2007-2009 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 -1; \
}
-static int parse_value (const data_set_t *ds, value_list_t *vl,
+static int dispatch_values (const data_set_t *ds, value_list_t *vl,
FILE *fh, char *buffer)
{
- char *dummy;
- char *ptr;
- char *saveptr;
- int i;
-
- char *time_str = buffer;
- char *value_str = strchr (time_str, ':');
- if (value_str == NULL)
- {
- print_to_socket (fh, "-1 No time found.\n");
- return (-1);
- }
- *value_str = '\0'; value_str++;
-
- vl->time = (time_t) atoi (time_str);
- if (vl->time == 0)
- vl->time = time (NULL);
-
- i = 0;
- dummy = value_str;
- saveptr = NULL;
- while ((ptr = strtok_r (dummy, ":", &saveptr)) != NULL)
- {
- dummy = NULL;
+ int status;
- if (i >= vl->values_len)
- {
- i = vl->values_len + 1;
- break;
- }
-
- if (strcmp (ptr, "U") == 0)
- vl->values[i].gauge = NAN;
- else if (ds->ds[i].type == DS_TYPE_COUNTER)
- vl->values[i].counter = atoll (ptr);
- else if (ds->ds[i].type == DS_TYPE_GAUGE)
- vl->values[i].gauge = atof (ptr);
-
- i++;
- } /* while (strtok_r) */
-
- if (i != vl->values_len)
+ status = parse_values (buffer, vl, ds);
+ if (status != 0)
{
- char identifier[128];
- FORMAT_VL (identifier, sizeof (identifier), vl, ds);
- ERROR ("cmd putval: parse_value: "
- "Number of values incorrect: "
- "Got %i, expected %i. Identifier is `%s'.",
- i, vl->values_len, identifier);
- print_to_socket (fh, "-1 Number of values incorrect: "
- "Got %i, expected %i.\n",
- i, vl->values_len);
+ print_to_socket (fh, "-1 Parsing the values string failed.\n");
return (-1);
}
plugin_dispatch_values (vl);
return (0);
-} /* int parse_value */
+} /* int dispatch_values */
static int set_option (value_list_t *vl, const char *key, const char *value)
{
}
assert (string != NULL);
- status = parse_value (ds, &vl, fh, string);
+ status = dispatch_values (ds, &vl, fh, string);
if (status != 0)
{
/* An error has already been printed. */