Skip to content

Commit

Permalink
Modified definition of hll_add
Browse files Browse the repository at this point in the history
  • Loading branch information
lucaderi committed Aug 17, 2022
1 parent 82c83ef commit a53f476
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 15 deletions.
4 changes: 2 additions & 2 deletions src/include/ndpi_api.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -1692,8 +1692,8 @@ extern "C" {
void ndpi_hll_reset(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) ;
int ndpi_hll_add(struct ndpi_hll *hll, const char *data, size_t data_len);
int ndpi_hll_add_number(struct ndpi_hll *hll, u_int32_t value) ;

/* Get cardinality estimation */
double ndpi_hll_count(struct ndpi_hll *hll);
Expand Down
9 changes: 5 additions & 4 deletions src/lib/ndpi_analyze.c
Original file line number Diff line number Diff line change
Expand Up @@ -290,12 +290,13 @@ void ndpi_hll_reset(struct ndpi_hll *hll) {
hll_reset(hll);
}

void ndpi_hll_add(struct ndpi_hll *hll, const char *data, size_t data_len) {
hll_add(hll, (const void *)data, data_len);
int ndpi_hll_add(struct ndpi_hll *hll, const char *data, size_t data_len) {
return(hll_add(hll, (const void *)data, data_len));
}

void ndpi_hll_add_number(struct ndpi_hll *hll, u_int32_t value) {
hll_add(hll, (const void *)&value, sizeof(value));
/* 1 = rank changed, 0 = no changes in rank */
int ndpi_hll_add_number(struct ndpi_hll *hll, u_int32_t value) {
return(hll_add(hll, (const void *)&value, sizeof(value)));
}

double ndpi_hll_count(struct ndpi_hll *hll) {
Expand Down
8 changes: 4 additions & 4 deletions src/lib/third_party/include/hll.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
*/


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);
extern int hll_init(struct ndpi_hll *hll, u_int8_t bits);
extern void hll_destroy(struct ndpi_hll *hll);
extern int hll_add(struct ndpi_hll *hll, const void *buf, size_t size);
extern double hll_count(const struct ndpi_hll *hll);
16 changes: 11 additions & 5 deletions src/lib/third_party/src/hll/hll.c
Original file line number Diff line number Diff line change
Expand Up @@ -97,20 +97,26 @@ void hll_reset(struct ndpi_hll *hll) {
memset(hll->registers, 0, hll->size);
}

static __inline void _hll_add_hash(struct ndpi_hll *hll, u_int32_t hash) {
/* Return: 0 = nothing changed, 1 = ranking changed */
static __inline int _hll_add_hash(struct ndpi_hll *hll, u_int32_t hash) {
if(hll->registers) {
u_int32_t index = hash >> (32 - hll->bits); /* Use the first 'hll->bits' bits as bucket index */
u_int8_t rank = _hll_rank(hash, hll->bits); /* Count the number of leading 0 */

if(rank > hll->registers[index])
hll->registers[index] = rank; /* Store the largest number of lesding zeros for the bucket */
if(rank > hll->registers[index]) {
hll->registers[index] = rank; /* Store the largest number of lesding zeros for the bucket */
return(1);
}
}

return(0);
}

void hll_add(struct ndpi_hll *hll, const void *buf, size_t size) {
/* Return: 0 = nothing changed, 1 = ranking changed */
int hll_add(struct ndpi_hll *hll, const void *buf, size_t size) {
u_int32_t hash = MurmurHash3_x86_32((const char *)buf, (u_int32_t)size, 0x5f61767a);

_hll_add_hash(hll, hash);
return(_hll_add_hash(hll, hash));
}

double hll_count(const struct ndpi_hll *hll) {
Expand Down

0 comments on commit a53f476

Please sign in to comment.