master
c 45 lines 1.27 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #include "ssv.h"
4
5 void rrdr2ssv(RRDR *r, BUFFER *wb, RRDR_OPTIONS options, const char *prefix, const char *separator, const char *suffix) {
6 //netdata_log_info("RRD2SSV(): %s: BEGIN", r->st->id);
7 long i;
8
9 buffer_strcat(wb, prefix);
10 long start = 0, end = rrdr_rows(r), step = 1;
11 if(!(options & RRDR_OPTION_REVERSED)) {
12 start = rrdr_rows(r) - 1;
13 end = -1;
14 step = -1;
15 }
16
17 // for each line in the array
18 for(i = start; i != end ;i += step) {
19 int all_values_are_null = 0;
20 NETDATA_DOUBLE v = rrdr2value(r, i, options, &all_values_are_null, NULL);
21
22 if(likely(i != start)) {
23 if(r->view.min > v) r->view.min = v;
24 if(r->view.max < v) r->view.max = v;
25 }
26 else {
27 r->view.min = v;
28 r->view.max = v;
29 }
30
31 if(likely(i != start))
32 buffer_strcat(wb, separator);
33
34 if(all_values_are_null) {
35 if(options & RRDR_OPTION_NULL2ZERO)
36 buffer_strcat(wb, "0");
37 else
38 buffer_strcat(wb, "null");
39 }
40 else
41 buffer_print_netdata_double(wb, v);
42 }
43 buffer_strcat(wb, suffix);
44 //netdata_log_info("RRD2SSV(): %s: END", r->st->id);
45 }