Browse Source

MT#56128 use existing helper functions

These functions iterate over lists, building hash tables or queues
respectively. Eliminate code duplication.

Change-Id: I375a72cc6a4d30044678e6d4abab148880713fe3
pull/1694/head
Richard Fuchs 2 years ago
parent
commit
d8c1a6785d
1 changed files with 9 additions and 24 deletions
  1. +9
    -24
      daemon/call_interfaces.c

+ 9
- 24
daemon/call_interfaces.c View File

@ -46,6 +46,13 @@ INLINE int call_ng_flags_prefix(struct sdp_ng_flags *out, str *s_ori, const char
void (*cb)(struct sdp_ng_flags *, str *, void *), void *ptr);
static void call_ng_flags_str_ht(struct sdp_ng_flags *out, str *s, void *htp);
static void call_ng_flags_str_q_multi(struct sdp_ng_flags *out, str *s, void *qp);
static void call_ng_flags_str_list(struct sdp_ng_flags *out, bencode_item_t *list,
void (*callback)(struct sdp_ng_flags *, str *, void *), void *parm);
static void call_ng_flags_list(struct sdp_ng_flags *out, bencode_item_t *list,
void (*str_callback)(struct sdp_ng_flags *, str *, void *),
void (*item_callback)(struct sdp_ng_flags *, bencode_item_t *, void *),
void *parm);
static void call_ng_flags_esc_str_list(struct sdp_ng_flags *out, str *s, void *qp);
static void ng_stats_ssrc(bencode_item_t *dict, struct ssrc_hash *ht);
static str *str_dup_escape(const str *s);
@ -663,36 +670,14 @@ INLINE void ng_sdp_attr_manipulations(struct sdp_ng_flags *flags, bencode_item_t
case CSH_LOOKUP("add"):
q_ptr = &sm->add_commands;
for (bencode_item_t *it_v = command_value->child; it_v; it_v = it_v->sibling)
{
/* detect command value */
str child_value;
if (!bencode_get_str(it_v, &child_value))
continue;
str * s_copy = str_dup_escape(&child_value);
g_queue_push_tail(q_ptr, s_copy);
}
call_ng_flags_str_list(NULL, command_value, call_ng_flags_esc_str_list, q_ptr);
break;
/* CMD_REM commands */
case CSH_LOOKUP("remove"):
ht = &sm->rem_commands;
/* a table can already be allocated by similar commands in previous iterations */
if (!*ht)
*ht = g_hash_table_new_full(str_case_hash, str_case_equal, free, NULL);
for (bencode_item_t *it_v = command_value->child; it_v; it_v = it_v->sibling)
{
/* detect command value */
str child_value;
if (!bencode_get_str(it_v, &child_value))
continue;
str *s_copy = str_dup_escape(&child_value);
g_hash_table_replace(*ht, s_copy, s_copy);
}
call_ng_flags_str_list(NULL, command_value, call_ng_flags_str_ht, ht);
break;
default:


Loading…
Cancel
Save