summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorchenzizhan <[email protected]>2024-08-01 14:12:46 +0800
committerchenzizhan <[email protected]>2024-08-01 14:12:46 +0800
commitae4c5b46775a0b730169c2d3b13190163d50f262 (patch)
tree5a3f3b9eee24be9117f29e655f5117b3a97aafc6 /src
parentf9dde08bcb7805c6ae8dd717100780def1fbc289 (diff)
api for stellar monitor query
Diffstat (limited to 'src')
-rw-r--r--src/cube.c16
-rw-r--r--src/cube.h2
-rw-r--r--src/fieldstat.c11
3 files changed, 14 insertions, 15 deletions
diff --git a/src/cube.c b/src/cube.c
index d6bfa09..344e273 100644
--- a/src/cube.c
+++ b/src/cube.c
@@ -1376,18 +1376,12 @@ enum metric_type cube_get_metric_type(const struct cube *cube, int metric_id) {
return metric->type;
}
-void cube_get_metrics(const struct cube *cube, int **metric_id_out, size_t *n_metric)
+int cube_get_metric_id_by_name(const struct cube *cube, const char *metric_name)
{
- const struct metric_manifest **list = metric_manifest_manager_list(cube->manifest_manager, n_metric);
- if (*n_metric == 0) {
- *metric_id_out = NULL;
- return;
+ const struct metric_manifest *metric = metric_manifest_manager_get_by_name(cube->manifest_manager, metric_name);
+ if (metric == NULL) {
+ return FS_ERR_INVALID_METRIC_NAME;
}
- int *tmp_ids = (int *)malloc(sizeof(int) * (*n_metric));
- *metric_id_out = tmp_ids;
-
- for (int i = 0; i < *n_metric; i++) {
- tmp_ids[i] = list[i]->id;
- }
+ return metric->id;
}
diff --git a/src/cube.h b/src/cube.h
index 1134aa6..6710e34 100644
--- a/src/cube.h
+++ b/src/cube.h
@@ -41,11 +41,11 @@ int cube_get_serialization_as_base64(const struct cube *cube, int metric_id, con
int cube_get_cell_count(const struct cube *cube);
enum sampling_mode cube_get_sampling_mode(const struct cube *cube);
void cube_get_cells(const struct cube *cube, struct field_list **cell_dimensions, size_t *n_cell);
-void cube_get_metrics(const struct cube *cube, int **metric_id_out, size_t *n_metric);
void cube_get_metrics_in_cell(const struct cube *cube, const struct field_list *dimensions, int **metric_id_out, size_t *n_metric_out);
struct field_list *cube_get_identifier(const struct cube *cube);
const char *cube_get_metric_name(const struct cube *cube, int metric_id);
enum metric_type cube_get_metric_type(const struct cube *cube, int metric_id);
+int cube_get_metric_id_by_name(const struct cube *cube, const char *metric_name);
/* -------------------------------------------------------------------------- */
/* cube manager */
diff --git a/src/fieldstat.c b/src/fieldstat.c
index bb530f1..3ba01e4 100644
--- a/src/fieldstat.c
+++ b/src/fieldstat.c
@@ -383,7 +383,12 @@ void fieldstat_get_metric_in_cell(const struct fieldstat *instance, int cube_id,
return cube_get_metrics_in_cell(cube, cell_dimensions, metric_id_out, n_metric_out);
}
-void fieldstat_cube_get_metrics(const struct fieldstat *instance, int cube_id, int **metric_id_out, size_t *n_metric) {
+int fieldstat_cube_get_metric_id_by_name(const struct fieldstat *instance, int cube_id, const char *metric_name)
+{
const struct cube *cube = cube_manager_get_cube_by_id(instance->cube_manager, cube_id);
- cube_get_metrics(cube, metric_id_out, n_metric);
-}
+ if (cube == NULL) {
+ return FS_ERR_INVALID_CUBE_ID;
+ }
+
+ return cube_get_metric_id_by_name(cube, metric_name);
+} \ No newline at end of file