/** Number of elements in g_daemons */
static size_t g_num_daemons = 0;
+/** Next expected latency metric value */
+enum latency_loop_state {
+ CEPH_AVGCOUNT,
+ CEPH_SUM,
+ CEPH_AVGTIME,
+};
+
/**
* A set of data that we build up in memory while parsing the JSON.
*/
uint64_t avgcount;
/** current index of counters - used to get type of counter */
int index;
- /** do we already have an avgcount for latency pair */
- int avgcount_exists;
+ /** value we expect to get next when parsing latency metric */
+ enum latency_loop_state latency_next_metric;
/**
* similar to index, but current index of latency type counters -
* used to get last poll data of counter
switch (type) {
case DSET_LATENCY:
- if (vtmp->avgcount_exists == -1) {
+ if (vtmp->latency_next_metric == CEPH_AVGCOUNT) {
sscanf(val, "%" PRIu64, &vtmp->avgcount);
- vtmp->avgcount_exists = 0;
+ vtmp->latency_next_metric = CEPH_SUM;
// return after saving avgcount - don't dispatch value
// until latency calculation
return 0;
- } else if (vtmp->avgcount_exists == 0) {
+ } else if (vtmp->latency_next_metric == CEPH_SUM) {
if (vtmp->avgcount == 0) {
vtmp->avgcount = 1;
}
- vtmp->avgcount_exists = 1;
+ vtmp->latency_next_metric = CEPH_AVGTIME;
// user wants latency values as long run avg
// skip this step
if (long_run_latency_avg) {
}
uv.gauge = result;
vtmp->latency_index = (vtmp->latency_index + 1);
- } else if (vtmp->avgcount_exists == 1 ) {
- vtmp->avgcount_exists = -1;
+ } else if (vtmp->latency_next_metric == CEPH_AVGTIME) {
+ vtmp->latency_next_metric = CEPH_AVGCOUNT;
// skip this step if no need in long run latency
if (!long_run_latency_avg) {
return 0;
sizeof(vtmp->vlist.plugin_instance));
vtmp->d = io->d;
- vtmp->avgcount_exists = -1;
+ vtmp->latency_next_metric = CEPH_AVGCOUNT;
vtmp->latency_index = 0;
vtmp->index = 0;
yajl->handler_arg = vtmp;