new command: 'list' to retreive the list of active call-ids

pull/14/head
Camille Oudot 12 years ago
parent 964b644ecd
commit a51db7172b

@ -369,6 +369,7 @@ const char *call_offer_ng(bencode_item_t *, struct callmaster *, bencode_item_t
const char *call_answer_ng(bencode_item_t *, struct callmaster *, bencode_item_t *);
const char *call_delete_ng(bencode_item_t *, struct callmaster *, bencode_item_t *);
const char *call_query_ng(bencode_item_t *, struct callmaster *, bencode_item_t *);
const char *call_list_ng(bencode_item_t *, struct callmaster *, bencode_item_t *);
void calls_dump_redis(struct callmaster *);

@ -845,6 +845,21 @@ stats:
ng_stats(bencode_dictionary_add_dictionary(dict, "RTCP"), &totals->totals[1], NULL);
}
void ng_list_add_call(gpointer key, gpointer value, gpointer user_data) {
bencode_item_t *output = (bencode_item_t *) user_data;
bencode_list_add_str(output, key);
}
void ng_list_calls( struct callmaster *m, bencode_item_t *output) {
rwlock_lock_r(&m->hashlock);
g_hash_table_foreach (m->callhash, ng_list_add_call, output);
rwlock_unlock_r(&m->hashlock);
}
const char *call_query_ng(bencode_item_t *input, struct callmaster *m, bencode_item_t *output) {
str callid, fromtag, totag;
struct call *call;
@ -864,3 +879,14 @@ const char *call_query_ng(bencode_item_t *input, struct callmaster *m, bencode_i
return NULL;
}
const char *call_list_ng(bencode_item_t *input, struct callmaster *m, bencode_item_t *output) {
bencode_item_t *calls = NULL;
bencode_dictionary_add_string(output, "result", "ok");
calls = bencode_dictionary_add_list(output, "calls");
ng_list_calls(m, calls);
return NULL;
}

@ -117,6 +117,8 @@ static void control_ng_incoming(struct obj *obj, str *buf, struct sockaddr_in6 *
errstr = call_delete_ng(dict, c->callmaster, resp);
else if (!str_cmp(&cmd, "query"))
errstr = call_query_ng(dict, c->callmaster, resp);
else if (!str_cmp(&cmd, "list"))
errstr = call_list_ng(dict, c->callmaster, resp);
else
errstr = "Unrecognized command";

Loading…
Cancel
Save