summaryrefslogtreecommitdiff
path: root/src/fieldstat_dynamic.cpp
diff options
context:
space:
mode:
authorfumingwei <[email protected]>2023-03-27 21:39:40 +0800
committerfumingwei <[email protected]>2023-03-28 16:13:45 +0800
commit1b65cc6b0cabca68f7e731a5d201dc1071bbd48d (patch)
tree3db78f66563fcb88734890bec23a2688abe05902 /src/fieldstat_dynamic.cpp
parent45a6ce34addd9187d7123c03d3badd5fa6d30589 (diff)
feature:新增获取dynamic metric value的接口v3.0.0
Diffstat (limited to 'src/fieldstat_dynamic.cpp')
-rw-r--r--src/fieldstat_dynamic.cpp29
1 files changed, 29 insertions, 0 deletions
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;
+}