diff options
| author | chenzizhan <[email protected]> | 2024-10-16 14:10:34 +0800 |
|---|---|---|
| committer | chenzizhan <[email protected]> | 2024-10-16 14:10:34 +0800 |
| commit | c0e5467f94d11365e2c90c4fedf2c0d4f12862c4 (patch) | |
| tree | 8cd720c8be57e794261974e8dc4c07bfe3f6f9ad /include | |
| parent | f56b8f44b91a07bcbcd08614aa4341c2c892b4a1 (diff) | |
histogram batch
Diffstat (limited to 'include')
| -rw-r--r-- | include/fieldstat/fieldstat.h | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/include/fieldstat/fieldstat.h b/include/fieldstat/fieldstat.h index 8268436..0e3bce9 100644 --- a/include/fieldstat/fieldstat.h +++ b/include/fieldstat/fieldstat.h @@ -57,13 +57,7 @@ struct field { }; }; -struct field_t_0_fs *pst = (fields[]); -{ - uint64_t hashv = 0; - char *serialized_dimension; - int bucket_in_uthash; - struct cell *cell; -} +struct histogram; struct fieldstat; struct fieldstat *fieldstat_new(); @@ -160,15 +154,28 @@ int fieldstat_hll_add_fields(struct fieldstat *instance, int cube_id, int metric * @return Error codes. */ int fieldstat_histogram_record(struct fieldstat *instance, int cube_id, int metric_id, const struct field *cell_dimensions, size_t n_dimensions, long long value); -struct histogram; -struct histogram *fieldstat_histogram_fork(struct fieldstat *instance, int metric_id); -void -void histogram_free(struct fieldstat_histogram *histogram); -void histogram_reset(struct fieldstat_histogram *histogram); -int fieldstat_histogram_merge(struct fieldstat *instance, int cube_id, int metric_id, const struct field *cell_dimensions, size_t n_dimensions, const struct histogram *src); - -struct +/* +struct histogram provides a way to update the histogram metric in batch created and updated by user. + + Example: + struct histogram *histogram = fieldstat_histogram_fork(instance, cube_id, metric_id); + for (int i = 0; i < many_packet_length; i++) { + histogram_record(histogram, packet_length[i]); + } + + fieldstat_histogram_merge(instance, cube_id, metric_id, cell_dimensions, n_dimensions, histogram); + histogram_reset(histogram); + + ... + // after many times of histogram_record + histogram_free(histogram); +*/ +struct histogram *fieldstat_histogram_fork(const struct fieldstat *instance, int cube_id, int metric_id); +void histogram_free(struct histogram *histogram); +void histogram_reset(struct histogram *histogram); +int fieldstat_histogram_merge(struct fieldstat *instance, int cube_id, int metric_id, const struct field *cell_dimensions, size_t n_dimensions, const struct histogram *src); +int histogram_record(struct histogram *histogram, long long value); /* * @brief Delete all the cells, also the content of every metrics. The cube and metrics are not deleted. |
