From 1b65cc6b0cabca68f7e731a5d201dc1071bbd48d Mon Sep 17 00:00:00 2001 From: fumingwei Date: Mon, 27 Mar 2023 21:39:40 +0800 Subject: feature:新增获取dynamic metric value的接口 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/fieldstat_dynamic.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/fieldstat_dynamic.cpp') diff --git a/src/fieldstat_dynamic.cpp b/src/fieldstat_dynamic.cpp index 162e91a..5a0609e 100644 --- a/src/fieldstat_dynamic.cpp +++ b/src/fieldstat_dynamic.cpp @@ -503,3 +503,32 @@ int fieldstat_dynamic_table_metric_value_decrby(struct fieldstat_dynamic_instanc return ret; } + +static long long dynamic_metric_value_read(struct fieldstat_dynamic_instance *instance, int table_id, unsigned int column_id, const char *field_name, const struct fieldstat_tag tags[], size_t n_tags, int thread_id) +{ + long long value = 0; + struct metric * metric = NULL; + metric = read_dynamic_metric(instance, table_id, column_id, field_name, tags, n_tags, thread_id); + if(metric == NULL) + { + return 0; + } + metric->field_type == FIELD_TYPE_GAUGE + ?value = get_metric_unit_val(metric, FS_CALC_CURRENT, 0) + :value = get_metric_unit_val(metric, FS_CALC_SPEED, 0); + return value; +} + +long long fieldstat_dynamic_metric_value_get(struct fieldstat_dynamic_instance *instance, const char *field_name, const struct fieldstat_tag tags[], size_t n_tags, int thread_id) +{ + long long value = 0; + value = dynamic_metric_value_read(instance, -1, -1, field_name, tags, n_tags, thread_id); + return value; +} + +long long fieldstat_dynamic_table_metric_value_get(struct fieldstat_dynamic_instance *instance, int table_id, unsigned int column_id, const char *row_name, const struct fieldstat_tag tags[], size_t n_tags, int thread_id) +{ + long long value = 0; + value = dynamic_metric_value_read(instance, table_id, column_id, row_name, tags, n_tags, thread_id); + return value; +} -- cgit v1.2.3