diff options
| -rw-r--r-- | include/fieldstat/fieldstat.h | 3 | ||||
| -rw-r--r-- | include/fieldstat/fieldstat_easy.h | 5 | ||||
| -rw-r--r-- | src/cube.c | 2 | ||||
| -rw-r--r-- | src/cube.h | 2 | ||||
| -rw-r--r-- | src/fieldstat.c | 2 | ||||
| -rw-r--r-- | src/fieldstat_easy.c | 16 |
6 files changed, 21 insertions, 9 deletions
diff --git a/include/fieldstat/fieldstat.h b/include/fieldstat/fieldstat.h index f47fb2d..b539ab8 100644 --- a/include/fieldstat/fieldstat.h +++ b/include/fieldstat/fieldstat.h @@ -130,8 +130,7 @@ int fieldstat_counter_incrby(struct fieldstat *instance, int cube_id, int metric * @param n_metrics: the length of metric_ids and increments. * @return Error codes. Or just assert fail if the parameters are invalid. */ -int fieldstat_counter_incrby_batch(struct fieldstat *instance, int cube_id, const struct field *cell_dimensions, size_t n_dimensions, int metric_ids[], long long increments[], size_t n_metrics); - +int fieldstat_counter_incrby_batch(struct fieldstat *instance, int cube_id, const struct field *cell_dimensions, size_t n_dimensions, const int metric_ids[], const long long increments[], size_t n_metrics); /* * @brief let the value of counter metric equal to value. Must be called on non-primary metric. Other annotations refer to fieldstat_counter_incrby. diff --git a/include/fieldstat/fieldstat_easy.h b/include/fieldstat/fieldstat_easy.h index 97d7394..4074c70 100644 --- a/include/fieldstat/fieldstat_easy.h +++ b/include/fieldstat/fieldstat_easy.h @@ -65,10 +65,7 @@ int fieldstat_easy_output_array_and_reset(struct fieldstat_easy *fse, char ***js */ int fieldstat_easy_counter_incrby(struct fieldstat_easy *fse, int thread_id, int metric_id, const struct field *dimensions, size_t n_dimensions, long long increment); - -// TODO: easy 的加速使用,跟其他人对接一下。包括如何在不改变fieldstat.h 的基础上再来一套接口。 -// int fieldstat_easy_counter_incrby(struct fieldstat_easy *fse, int thread_id, int metric_id, int cell_id, long long increment); -// int fieldstat_easy_add_cell(struct fieldstat_easy *fse,const struct field *dimensions, size_t n_dimensions); +int fieldstat_easy_counter_incrby_batch(struct fieldstat_easy *fse, int thread_id, int metric_ids[], const struct field *dimensions, size_t n_dimensions, const long long *increments, size_t n_metrics); /* * @brief let the value of counter metric of dimensions equal to `value`. @@ -965,7 +965,7 @@ int cube_counter_incrby(struct cube *cube, int metric_id, const struct field *di return FS_OK; } -int cube_counter_incrby_batch(struct cube *cube, int metric_ids[], const struct field *dimensions, size_t n_dimensions, long long increments[], size_t n_metrics) { +int cube_counter_incrby_batch(struct cube *cube, const int metric_ids[], const struct field *dimensions, size_t n_dimensions, const long long increments[], size_t n_metrics) { if (cube->primary_metric_id == -1) { return FS_ERR_CUBE_SAMPLING_NOT_INITIALIZED; } @@ -32,7 +32,7 @@ int cube_hll_add(struct cube *cube, int metric_id, const struct field *dimension int cube_hll_add_field(struct cube *cube, int metric_id, const struct field *dimensions, size_t n_dimensions, const struct field *item_fields, size_t n_item); int cube_counter_incrby(struct cube *cube, int metric_id, const struct field *dimensions, size_t n_dimensions, long long increment); int cube_counter_set(struct cube *cube, int metric_id, const struct field *dimensions, size_t n_dimensions, long long value); -int cube_counter_incrby_batch(struct cube *cube, int metric_ids[], const struct field *dimensions, size_t n_dimensions, long long increments[], size_t n_metrics); +int cube_counter_incrby_batch(struct cube *cube, const int metric_ids[], const struct field *dimensions, size_t n_dimensions, const long long increments[], size_t n_metrics); /* ---------------------------------- query --------------------------------- */ int cube_counter_get(const struct cube *cube, int metric_id, const struct field_list *dimensions, long long *value); diff --git a/src/fieldstat.c b/src/fieldstat.c index 7782051..76bd478 100644 --- a/src/fieldstat.c +++ b/src/fieldstat.c @@ -158,7 +158,7 @@ int fieldstat_counter_incrby(struct fieldstat *instance, int cube_id, int metric } // cppcheck-suppress [constParameterPointer, unmatchedSuppression] -int fieldstat_counter_incrby_batch(struct fieldstat *instance, int cube_id, const struct field *cell_dimensions, size_t n_dimensions, int metric_ids[], long long increments[], size_t n_metrics) +int fieldstat_counter_incrby_batch(struct fieldstat *instance, int cube_id, const struct field *cell_dimensions, size_t n_dimensions, const int metric_ids[], const long long increments[], size_t n_metrics) { struct cube *cube = cube_manager_get_cube_by_id(instance->cube_manager, cube_id); if (cube == NULL) { diff --git a/src/fieldstat_easy.c b/src/fieldstat_easy.c index ed94484..43447b3 100644 --- a/src/fieldstat_easy.c +++ b/src/fieldstat_easy.c @@ -339,6 +339,22 @@ int fieldstat_easy_counter_incrby(struct fieldstat_easy *fse, int thread_id, int return ret; } +int fieldstat_easy_counter_incrby_batch(struct fieldstat_easy *fse, int thread_id, int metric_ids[], const struct field *dimensions, size_t n_dimensions, const long long *increments, size_t n_metrics) +{ + if (thread_id < 0) { + return -1; + } + if (thread_id >= fse->max_thread_num) { + return -1; + } + + pthread_spin_lock(&fse->fsu[thread_id].lock); + int ret = fieldstat_counter_incrby_batch(fse->fsu[thread_id].active, 0, dimensions, n_dimensions, metric_ids, increments, n_metrics); + pthread_spin_unlock(&fse->fsu[thread_id].lock); + + return ret; +} + int fieldstat_easy_counter_set(struct fieldstat_easy *fse, int thread_id, int metric_id, const struct field *dimensions, size_t n_dimensions, long long value) { if (thread_id < 0) { |
