Lines Matching refs:lhq

153 static nxt_int_t nxt_lvlhsh_level_find(nxt_lvlhsh_query_t *lhq, void **lvl,
155 static nxt_int_t nxt_lvlhsh_bucket_find(nxt_lvlhsh_query_t *lhq, void **bkt);
156 static nxt_int_t nxt_lvlhsh_new_bucket(nxt_lvlhsh_query_t *lhq, void **slot);
157 static nxt_int_t nxt_lvlhsh_level_insert(nxt_lvlhsh_query_t *lhq,
159 static nxt_int_t nxt_lvlhsh_bucket_insert(nxt_lvlhsh_query_t *lhq,
161 static nxt_int_t nxt_lvlhsh_convert_bucket_to_level(nxt_lvlhsh_query_t *lhq,
163 static nxt_int_t nxt_lvlhsh_level_convertion_insert(nxt_lvlhsh_query_t *lhq,
165 static nxt_int_t nxt_lvlhsh_bucket_convertion_insert(nxt_lvlhsh_query_t *lhq,
167 static nxt_int_t nxt_lvlhsh_free_level(nxt_lvlhsh_query_t *lhq, void **level,
169 static nxt_int_t nxt_lvlhsh_level_delete(nxt_lvlhsh_query_t *lhq, void **slot,
171 static nxt_int_t nxt_lvlhsh_bucket_delete(nxt_lvlhsh_query_t *lhq, void **bkt);
181 nxt_lvlhsh_find(nxt_lvlhsh_t *lh, nxt_lvlhsh_query_t *lhq) in nxt_lvlhsh_find() argument
190 return nxt_lvlhsh_bucket_find(lhq, slot); in nxt_lvlhsh_find()
193 return nxt_lvlhsh_level_find(lhq, slot, lhq->key_hash, 0); in nxt_lvlhsh_find()
201 nxt_lvlhsh_level_find(nxt_lvlhsh_query_t *lhq, void **lvl, uint32_t key, in nxt_lvlhsh_level_find() argument
208 shift = lhq->proto->shift[nlvl]; in nxt_lvlhsh_level_find()
217 return nxt_lvlhsh_bucket_find(lhq, slot); in nxt_lvlhsh_level_find()
220 return nxt_lvlhsh_level_find(lhq, slot, key >> shift, nlvl + 1); in nxt_lvlhsh_level_find()
228 nxt_lvlhsh_bucket_find(nxt_lvlhsh_query_t *lhq, void **bkt) in nxt_lvlhsh_bucket_find() argument
235 bucket = nxt_lvlhsh_bucket(lhq->proto, bkt); in nxt_lvlhsh_bucket_find()
236 n = nxt_lvlhsh_bucket_entries(lhq->proto, bkt); in nxt_lvlhsh_bucket_find()
243 if (nxt_lvlhsh_entry_key(e) == lhq->key_hash) { in nxt_lvlhsh_bucket_find()
247 if (lhq->proto->test(lhq, value) == NXT_OK) { in nxt_lvlhsh_bucket_find()
248 lhq->value = value; in nxt_lvlhsh_bucket_find()
259 bkt = *nxt_lvlhsh_next_bucket(lhq->proto, bucket); in nxt_lvlhsh_bucket_find()
268 nxt_lvlhsh_insert(nxt_lvlhsh_t *lh, nxt_lvlhsh_query_t *lhq) in nxt_lvlhsh_insert() argument
274 key = lhq->key_hash; in nxt_lvlhsh_insert()
277 return nxt_lvlhsh_bucket_insert(lhq, &lh->slot, key, -1); in nxt_lvlhsh_insert()
280 return nxt_lvlhsh_level_insert(lhq, &lh->slot, key, 0); in nxt_lvlhsh_insert()
283 return nxt_lvlhsh_new_bucket(lhq, &lh->slot); in nxt_lvlhsh_insert()
288 nxt_lvlhsh_new_bucket(nxt_lvlhsh_query_t *lhq, void **slot) in nxt_lvlhsh_new_bucket() argument
292 bucket = lhq->proto->alloc(lhq->pool, nxt_lvlhsh_bucket_size(lhq->proto)); in nxt_lvlhsh_new_bucket()
296 nxt_lvlhsh_set_entry_value(bucket, lhq->value); in nxt_lvlhsh_new_bucket()
297 nxt_lvlhsh_set_entry_key(bucket, lhq->key_hash); in nxt_lvlhsh_new_bucket()
299 *nxt_lvlhsh_next_bucket(lhq->proto, bucket) = NULL; in nxt_lvlhsh_new_bucket()
311 nxt_lvlhsh_level_insert(nxt_lvlhsh_query_t *lhq, void **parent, uint32_t key, in nxt_lvlhsh_level_insert() argument
319 shift = lhq->proto->shift[nlvl]; in nxt_lvlhsh_level_insert()
329 return nxt_lvlhsh_bucket_insert(lhq, slot, key, nlvl); in nxt_lvlhsh_level_insert()
332 return nxt_lvlhsh_level_insert(lhq, slot, key, nlvl + 1); in nxt_lvlhsh_level_insert()
335 ret = nxt_lvlhsh_new_bucket(lhq, slot); in nxt_lvlhsh_level_insert()
346 nxt_lvlhsh_bucket_insert(nxt_lvlhsh_query_t *lhq, void **slot, uint32_t key, in nxt_lvlhsh_bucket_insert() argument
359 proto = lhq->proto; in nxt_lvlhsh_bucket_insert()
371 if (nxt_lvlhsh_entry_key(e) == lhq->key_hash) { in nxt_lvlhsh_bucket_insert()
375 if (proto->test(lhq, value) == NXT_OK) { in nxt_lvlhsh_bucket_insert()
377 new_value = lhq->value; in nxt_lvlhsh_bucket_insert()
378 lhq->value = value; in nxt_lvlhsh_bucket_insert()
380 if (lhq->replace) { in nxt_lvlhsh_bucket_insert()
423 nxt_lvlhsh_set_entry_value(vacant_entry, lhq->value); in nxt_lvlhsh_bucket_insert()
424 nxt_lvlhsh_set_entry_key(vacant_entry, lhq->key_hash); in nxt_lvlhsh_bucket_insert()
436 ret = nxt_lvlhsh_convert_bucket_to_level(lhq, slot, nlvl, bucket); in nxt_lvlhsh_bucket_insert()
439 return nxt_lvlhsh_level_insert(lhq, slot, key, nlvl); in nxt_lvlhsh_bucket_insert()
447 return nxt_lvlhsh_new_bucket(lhq, bkt); in nxt_lvlhsh_bucket_insert()
452 nxt_lvlhsh_convert_bucket_to_level(nxt_lvlhsh_query_t *lhq, void **slot, in nxt_lvlhsh_convert_bucket_to_level() argument
462 proto = lhq->proto; in nxt_lvlhsh_convert_bucket_to_level()
465 lvl = proto->alloc(lhq->pool, size * (sizeof(void *))); in nxt_lvlhsh_convert_bucket_to_level()
491 q.pool = lhq->pool; in nxt_lvlhsh_convert_bucket_to_level()
499 return nxt_lvlhsh_free_level(lhq, level, size); in nxt_lvlhsh_convert_bucket_to_level()
505 proto->free(lhq->pool, bucket); in nxt_lvlhsh_convert_bucket_to_level()
512 nxt_lvlhsh_level_convertion_insert(nxt_lvlhsh_query_t *lhq, void **parent, in nxt_lvlhsh_level_convertion_insert() argument
520 shift = lhq->proto->shift[nlvl]; in nxt_lvlhsh_level_convertion_insert()
527 ret = nxt_lvlhsh_new_bucket(lhq, slot); in nxt_lvlhsh_level_convertion_insert()
538 return nxt_lvlhsh_bucket_convertion_insert(lhq, slot, key >> shift, nlvl); in nxt_lvlhsh_level_convertion_insert()
550 nxt_lvlhsh_bucket_convertion_insert(nxt_lvlhsh_query_t *lhq, void **slot, in nxt_lvlhsh_bucket_convertion_insert() argument
560 proto = lhq->proto; in nxt_lvlhsh_bucket_convertion_insert()
569 nxt_lvlhsh_set_entry_value(e, lhq->value); in nxt_lvlhsh_bucket_convertion_insert()
570 nxt_lvlhsh_set_entry_key(e, lhq->key_hash); in nxt_lvlhsh_bucket_convertion_insert()
586 ret = nxt_lvlhsh_convert_bucket_to_level(lhq, slot, nlvl, bucket); in nxt_lvlhsh_bucket_convertion_insert()
589 return nxt_lvlhsh_level_insert(lhq, slot, key, nlvl); in nxt_lvlhsh_bucket_convertion_insert()
597 return nxt_lvlhsh_new_bucket(lhq, bkt); in nxt_lvlhsh_bucket_convertion_insert()
602 nxt_lvlhsh_free_level(nxt_lvlhsh_query_t *lhq, void **level, nxt_uint_t size) in nxt_lvlhsh_free_level() argument
607 proto = lhq->proto; in nxt_lvlhsh_free_level()
617 proto->free(lhq->pool, nxt_lvlhsh_bucket(proto, level[i])); in nxt_lvlhsh_free_level()
621 proto->free(lhq->pool, level); in nxt_lvlhsh_free_level()
628 nxt_lvlhsh_delete(nxt_lvlhsh_t *lh, nxt_lvlhsh_query_t *lhq) in nxt_lvlhsh_delete() argument
633 return nxt_lvlhsh_bucket_delete(lhq, &lh->slot); in nxt_lvlhsh_delete()
636 return nxt_lvlhsh_level_delete(lhq, &lh->slot, lhq->key_hash, 0); in nxt_lvlhsh_delete()
644 nxt_lvlhsh_level_delete(nxt_lvlhsh_query_t *lhq, void **parent, uint32_t key, in nxt_lvlhsh_level_delete() argument
652 shift = lhq->proto->shift[nlvl]; in nxt_lvlhsh_level_delete()
661 ret = nxt_lvlhsh_bucket_delete(lhq, slot); in nxt_lvlhsh_level_delete()
665 ret = nxt_lvlhsh_level_delete(lhq, slot, key, nlvl + 1); in nxt_lvlhsh_level_delete()
673 lhq->proto->free(lhq->pool, lvl); in nxt_lvlhsh_level_delete()
685 nxt_lvlhsh_bucket_delete(nxt_lvlhsh_query_t *lhq, void **bkt) in nxt_lvlhsh_bucket_delete() argument
692 proto = lhq->proto; in nxt_lvlhsh_bucket_delete()
702 if (nxt_lvlhsh_entry_key(e) == lhq->key_hash) { in nxt_lvlhsh_bucket_delete()
706 if (proto->test(lhq, value) == NXT_OK) { in nxt_lvlhsh_bucket_delete()
710 proto->free(lhq->pool, bucket); in nxt_lvlhsh_bucket_delete()
717 lhq->value = value; in nxt_lvlhsh_bucket_delete()