MT#56471 add more generic create_ssrc_hash

... which doesn't pre-create one SSRC object

Change-Id: Ibea369073f45198608664f655f725dbcf9c122d7
pull/1627/head
Richard Fuchs 3 years ago
parent 1a30947ea1
commit 8ace838eed

@ -202,13 +202,17 @@ void ssrc_hash_foreach(struct ssrc_hash *sh, void (*f)(void *, void *), void *pt
}
struct ssrc_hash *create_ssrc_hash_full(ssrc_create_func_t cfunc, void *uptr) {
struct ssrc_hash *create_ssrc_hash_full_fast(ssrc_create_func_t cfunc, void *uptr) {
struct ssrc_hash *ret;
ret = g_slice_alloc0(sizeof(*ret));
ret->ht = g_hash_table_new_full(uint32_hash, uint32_eq, NULL, ssrc_entry_put);
rwlock_init(&ret->lock);
ret->create_func = cfunc;
ret->uptr = uptr;
return ret;
}
struct ssrc_hash *create_ssrc_hash_full(ssrc_create_func_t cfunc, void *uptr) {
struct ssrc_hash *ret = create_ssrc_hash_full_fast(cfunc, uptr);
ret->precreat = cfunc(uptr); // because object creation might be slow
return ret;
}

@ -208,7 +208,8 @@ struct ssrc_xr_voip_metrics {
void free_ssrc_hash(struct ssrc_hash **);
void ssrc_hash_foreach(struct ssrc_hash *, void (*)(void *, void *), void *);
struct ssrc_hash *create_ssrc_hash_full(ssrc_create_func_t, void *uptr);
struct ssrc_hash *create_ssrc_hash_full(ssrc_create_func_t, void *uptr); // pre-creates one object
struct ssrc_hash *create_ssrc_hash_full_fast(ssrc_create_func_t, void *uptr); // doesn't pre-create object
struct ssrc_hash *create_ssrc_hash_call(void);

Loading…
Cancel
Save