From 8ace838eedfe6ff3f8be53fb06895602e38a2670 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Fri, 17 Feb 2023 09:41:23 -0500 Subject: [PATCH] MT#56471 add more generic create_ssrc_hash ... which doesn't pre-create one SSRC object Change-Id: Ibea369073f45198608664f655f725dbcf9c122d7 --- daemon/ssrc.c | 6 +++++- include/ssrc.h | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/daemon/ssrc.c b/daemon/ssrc.c index c1145920a..34bf41b5f 100644 --- a/daemon/ssrc.c +++ b/daemon/ssrc.c @@ -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; } diff --git a/include/ssrc.h b/include/ssrc.h index 308fe3479..8a611307c 100644 --- a/include/ssrc.h +++ b/include/ssrc.h @@ -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);