예제 #1
0
파일: statsd.c 프로젝트: beorn-/collectd
static int statsd_handle_counter (char const *name, /* {{{ */
    char const *value_str,
    char const *extra)
{
  value_t value;
  value_t scale;
  int status;

  if ((extra != NULL) && (extra[0] != '@'))
    return (-1);

  scale.gauge = 1.0;
  if (extra != NULL)
  {
    status = statsd_parse_value (extra + 1, &scale);
    if (status != 0)
      return (status);

    if (!isfinite (scale.gauge) || (scale.gauge <= 0.0) || (scale.gauge > 1.0))
      return (-1);
  }

  value.gauge = 1.0;
  status = statsd_parse_value (value_str, &value);
  if (status != 0)
    return (status);

  /* Changes to the counter are added to (statsd_metric_t*)->value. ->counter is
   * only updated in statsd_metric_submit_unsafe(). */
  return (statsd_metric_add (name, (double) (value.gauge / scale.gauge),
        STATSD_COUNTER));
} /* }}} int statsd_handle_counter */
예제 #2
0
파일: statsd.c 프로젝트: skolot/collectd
static int statsd_handle_counter (statsd_config_t *conf, char const *name, /* {{{ */
    char const *value_str,
    char const *extra)
{
  value_t value;
  value_t scale;
  int status;

  if ((extra != NULL) && (extra[0] != '@'))
    return (-1);

  scale.gauge = 1.0;
  if (extra != NULL)
  {
    status = statsd_parse_value (extra + 1, &scale);
    if (status != 0)
      return (status);

    if (!isfinite (scale.gauge) || (scale.gauge <= 0.0) || (scale.gauge > 1.0))
      return (-1);
  }

  value.gauge = 1.0;
  status = statsd_parse_value (value_str, &value);
  if (status != 0)
    return (status);

  return (statsd_metric_add (conf, name, (double) (value.gauge / scale.gauge),
        STATSD_COUNTER));
} /* }}} int statsd_handle_counter */
예제 #3
0
파일: statsd.c 프로젝트: EMSL-MSC/collectd
static int statsd_handle_gauge(char const *name, /* {{{ */
                               char const *value_str) {
  value_t value;
  int status;

  value.gauge = 0;
  status = statsd_parse_value(value_str, &value);
  if (status != 0)
    return status;

  if ((value_str[0] == '+') || (value_str[0] == '-'))
    return statsd_metric_add(name, (double)value.gauge, STATSD_GAUGE);
  else
    return statsd_metric_set(name, (double)value.gauge, STATSD_GAUGE);
} /* }}} int statsd_handle_gauge */