diff --git a/daemon/call.c b/daemon/call.c index 9a2071a7f..c2fc6a9d4 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -49,11 +49,11 @@ #include "t38.h" -/* also serves as array index for callstream->peers[] */ struct iterator_helper { GSList *del_timeout; GSList *del_scheduled; GHashTable *addr_sfd; + uint64_t transcoded_media; }; struct xmlrpc_helper { enum xmlrpc_format fmt; @@ -207,6 +207,12 @@ next: ; } + for (it = c->medias.head; it; it = it->next) { + struct call_media *media = it->data; + if (MEDIA_ISSET(media, TRANSCODE)) + hlp->transcoded_media++; + } + if (good || IS_FOREIGN_CALL(c)) { goto out; } @@ -565,6 +571,9 @@ static void call_timer(void *ptr) { deletes = atomic64_get_set(&rtpe_statsps.deletes, 0); update_requests_per_second_stats(&rtpe_totalstats_interval.deletes_ps, deletes / run_diff); + // stats derived while iterating calls + atomic64_set(&rtpe_stats.transcoded_media, hlp.transcoded_media); + i = kernel_list(); while (i) { ke = i->data; diff --git a/daemon/cli.c b/daemon/cli.c index 7067158df..6233153e0 100644 --- a/daemon/cli.c +++ b/daemon/cli.c @@ -504,6 +504,7 @@ static void cli_incoming_list_numsessions(str *instr, struct streambuf *replybuf streambuf_printf(replybuffer, "Current sessions foreign: "UINT64F"\n", atomic64_get(&rtpe_stats.foreign_sessions)); streambuf_printf(replybuffer, "Current sessions total: %i\n", g_hash_table_size(rtpe_callhash)); rwlock_unlock_r(&rtpe_callhash_lock); + streambuf_printf(replybuffer, "Current transcoded media: "UINT64F"\n", atomic64_get(&rtpe_stats.transcoded_media)); } static void cli_incoming_list_maxsessions(str *instr, struct streambuf *replybuffer) { diff --git a/daemon/graphite.c b/daemon/graphite.c index 6d72b8a9e..d4fca75eb 100644 --- a/daemon/graphite.c +++ b/daemon/graphite.c @@ -190,6 +190,7 @@ static int send_graphite_data(struct totalstats *sent_data) { GPF("current_sessions_total "UINT64F, ts->total_sessions); GPF("current_sessions_own "UINT64F, ts->own_sessions); GPF("current_sessions_foreign "UINT64F, ts->foreign_sessions); + GPF("current_transcoded_media "UINT64F, atomic64_get(&rtpe_stats.transcoded_media)); GPF("nopacket_relayed_sess "UINT64F, atomic64_get_na(&ts->total_nopacket_relayed_sess)); GPF("oneway_stream_sess "UINT64F, atomic64_get_na(&ts->total_oneway_stream_sess)); GPF("regular_term_sess "UINT64F, atomic64_get_na(&ts->total_regular_term_sess)); diff --git a/include/statistics.h b/include/statistics.h index fad5c3b35..a2a4b3ab2 100644 --- a/include/statistics.h +++ b/include/statistics.h @@ -18,6 +18,7 @@ struct stats { atomic64 offers; atomic64 answers; atomic64 deletes; + atomic64 transcoded_media; };