summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorchenzizhan <[email protected]>2024-10-16 14:10:34 +0800
committerchenzizhan <[email protected]>2024-10-16 14:10:34 +0800
commitc0e5467f94d11365e2c90c4fedf2c0d4f12862c4 (patch)
tree8cd720c8be57e794261974e8dc4c07bfe3f6f9ad /include
parentf56b8f44b91a07bcbcd08614aa4341c2c892b4a1 (diff)
histogram batch
Diffstat (limited to 'include')
-rw-r--r--include/fieldstat/fieldstat.h37
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.