From 60aaa80570b48b15c14c2a5133d9b73f7578b21a Mon Sep 17 00:00:00 2001 From: Luca Deri Date: Wed, 10 Jun 2020 23:43:35 +0200 Subject: Added HyperLogLog cardinality estimator API calls /* Memory lifecycle */ int ndpi_hll_init(struct ndpi_hll *hll, u_int8_t bits); void ndpi_hll_destroy(struct ndpi_hll *hll); /* Add values */ void ndpi_hll_add(struct ndpi_hll *hll, const char *data, size_t data_len); void ndpi_hll_add_number(struct ndpi_hll *hll, u_int32_t value) ; /* Get cardinality estimation */ double ndpi_hll_count(struct ndpi_hll *hll); --- src/lib/third_party/include/MurmurHash3.h | 8 ++++++++ src/lib/third_party/include/hll.h | 27 +++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/lib/third_party/include/MurmurHash3.h create mode 100644 src/lib/third_party/include/hll.h (limited to 'src/lib/third_party/include') diff --git a/src/lib/third_party/include/MurmurHash3.h b/src/lib/third_party/include/MurmurHash3.h new file mode 100644 index 000000000..a048eb37d --- /dev/null +++ b/src/lib/third_party/include/MurmurHash3.h @@ -0,0 +1,8 @@ +#ifndef _MURMURHASH3_H_ +#define _MURMURHASH3_H_ + +#include + +uint32_t MurmurHash3_x86_32(const void * key, uint32_t len, uint32_t seed); + +#endif diff --git a/src/lib/third_party/include/hll.h b/src/lib/third_party/include/hll.h new file mode 100644 index 000000000..00975ec36 --- /dev/null +++ b/src/lib/third_party/include/hll.h @@ -0,0 +1,27 @@ +/* + Code taken from https://github.com/avz/hll + + Copyright (c) 2015 Artem Zaytsev + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + */ + + +extern int hll_init(struct ndpi_hll *hll, u_int8_t bits); +extern void hll_destroy(struct ndpi_hll *hll); +extern void hll_add(struct ndpi_hll *hll, const void *buf, size_t size); +extern double hll_count(const struct ndpi_hll *hll); -- cgit v1.2.3