ssv.c 1.3 KB

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