| 1 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | |
| 3 | #include "commands.h" |
| 4 | #include "../stream-sender-internals.h" |
| 5 | |
| 6 | void stream_send_rrdset_metrics_v1(RRDSET_STREAM_BUFFER *rsb, RRDSET *st) { |
| 7 | RRDHOST *host = st->rrdhost; (void)host; |
| 8 | BUFFER *wb = rsb->wb; |
| 9 | struct sender_state *s = host->sender; (void)s; |
| 10 | RRDSET_FLAGS flags = rsb->rrdset_flags; |
| 11 | |
| 12 | buffer_fast_strcat(wb, PLUGINSD_KEYWORD_BEGIN " \"", 7); |
| 13 | buffer_fast_strcat(wb, rrdset_id(st), string_strlen(st->id)); |
| 14 | buffer_fast_strcat(wb, "\" ", 2); |
| 15 | |
| 16 | if(st->last_collected_time.tv_sec > st->stream.snd.resync_time_s) |
| 17 | buffer_print_uint64(wb, st->usec_since_last_update); |
| 18 | else |
| 19 | buffer_fast_strcat(wb, "0", 1); |
| 20 | |
| 21 | buffer_fast_strcat(wb, "\n", 1); |
| 22 | |
| 23 | RRDDIM *rd; |
| 24 | rrddim_foreach_read(rd, st) { |
| 25 | if(unlikely(!rrddim_check_updated(rd))) |
| 26 | continue; |
| 27 | |
| 28 | if(likely(rrddim_check_upstream_exposed_collector(rd))) { |
| 29 | buffer_fast_strcat(wb, PLUGINSD_KEYWORD_SET " \"", 5); |
| 30 | buffer_fast_strcat(wb, rrddim_id(rd), string_strlen(rd->id)); |
| 31 | buffer_fast_strcat(wb, "\" = ", 4); |
| 32 | if(rrddim_is_float(rd)) { |
| 33 | if(stream_has_capability(rsb, STREAM_CAP_FLOAT_BASELINE)) |
| 34 | buffer_print_netdata_double(wb, rrddim_collected_as_double(rd)); |
| 35 | else |
| 36 | buffer_print_int64(wb, (int64_t)rrddim_collected_as_double(rd)); |
| 37 | } |
| 38 | else |
| 39 | buffer_print_int64(wb, rd->collector.collected.i.collected_value); |
| 40 | buffer_fast_strcat(wb, "\n", 1); |
| 41 | } |
| 42 | else { |
| 43 | internal_error(true, "STREAM SND '%s': 'chart:%s/dim:%s' flag 'exposed' is updated but not exposed", |
| 44 | rrdhost_hostname(st->rrdhost), rrdset_id(st), rrddim_id(rd)); |
| 45 | // we will include it in the next iteration |
| 46 | rrddim_metadata_updated(rd); |
| 47 | } |
| 48 | } |
| 49 | rrddim_foreach_done(rd); |
| 50 | |
| 51 | if(unlikely(flags & RRDSET_FLAG_UPSTREAM_SEND_VARIABLES)) |
| 52 | rrdvar_print_to_streaming_custom_chart_variables(st, wb); |
| 53 | |
| 54 | buffer_fast_strcat(wb, PLUGINSD_KEYWORD_END "\n", 4); |
| 55 | } |