summaryrefslogtreecommitdiff
path: root/src/cells/spread_sketch.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cells/spread_sketch.h')
-rw-r--r--src/cells/spread_sketch.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/cells/spread_sketch.h b/src/cells/spread_sketch.h
index 9717238..930de4f 100644
--- a/src/cells/spread_sketch.h
+++ b/src/cells/spread_sketch.h
@@ -12,14 +12,15 @@ extern "C"{
struct spread_sketch;
-// spread sketch alway store values more than expected_query_num,expected_query_num is a hint to set spread sketch parameters properly
-struct spread_sketch *spread_sketch_new(int expected_query_num);
+
+struct spread_sketch *spread_sketch_new(int depth, int width, unsigned char precision, int time_window_ms, struct timeval now);
+
void spread_sketch_free(struct spread_sketch *ss);
void spread_sketch_reset(struct spread_sketch *ss);
-int spread_sketch_add(struct spread_sketch *ss, const char *key, size_t key_length, uint64_t item_hash, void *arg);
+int spread_sketch_add(struct spread_sketch *ss, const char *key, size_t key_length, uint64_t item_hash, void *arg, struct timeval now);
void spread_sketch_set_exdata_schema(struct spread_sketch *ss, exdata_new_cb new_fn, exdata_free_cb free_fn, exdata_merge_cb merge_fn, exdata_reset_cb reset_fn, exdata_copy_cb copy_fn);
void *spread_sketch_get0_exdata(const struct spread_sketch *ss, const char *key, size_t key_len);
@@ -28,11 +29,19 @@ void *spread_sketch_get0_exdata(const struct spread_sketch *ss, const char *key,
int spread_sketch_get_count(const struct spread_sketch *ss);
size_t spread_sketch_list(const struct spread_sketch *ss, void **exdatas, size_t n_exdatas);
+double spread_sketch_query(const struct spread_sketch *ss, const char *key, size_t key_length, struct timeval now);
void spread_sketch_merge(struct spread_sketch *dest, const struct spread_sketch *src);
struct spread_sketch *spread_sketch_copy(const struct spread_sketch *src);
+void spread_sketch_get_parameter(const struct spread_sketch *ss, int *depth_out, int *width_out, unsigned char *precision_out, int *time_window_ms_out);
+/*
+// spread sketch alway store values more than expected_query_num,expected_query_num is a hint to set spread sketch parameters properly
+*/
+void spread_sketch_get_parameter_recommendation(int expected_super_spreader_number, int *depth_out, int *width_out, unsigned char *precision_out);
+
+
// for test
// void spread_sketch_one_point_query(const struct spread_sketch *ss, const char *key, size_t key_len, int *level_out, void **exdata_out);