|
|
@ -11,7 +11,7 @@ struct timeval rtpe_started; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mutex_t rtpe_codec_stats_lock; |
|
|
mutex_t rtpe_codec_stats_lock; |
|
|
GHashTable *rtpe_codec_stats; |
|
|
|
|
|
|
|
|
codec_stats_ht rtpe_codec_stats; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct global_stats_gauge rtpe_stats_gauge; // master values |
|
|
struct global_stats_gauge rtpe_stats_gauge; // master values |
|
|
@ -874,13 +874,15 @@ stats_metric_q *statistics_gather_metrics(struct interface_sampled_rate_stats *i |
|
|
mutex_lock(&rtpe_codec_stats_lock); |
|
|
mutex_lock(&rtpe_codec_stats_lock); |
|
|
HEADER("transcoders", NULL); |
|
|
HEADER("transcoders", NULL); |
|
|
HEADER("[", ""); |
|
|
HEADER("[", ""); |
|
|
GList *chains = g_hash_table_get_keys(rtpe_codec_stats); |
|
|
|
|
|
|
|
|
|
|
|
int last_tv_sec = rtpe_now.tv_sec - 1; |
|
|
int last_tv_sec = rtpe_now.tv_sec - 1; |
|
|
unsigned int idx = last_tv_sec & 1; |
|
|
unsigned int idx = last_tv_sec & 1; |
|
|
for (GList *l = chains; l; l = l->next) { |
|
|
|
|
|
char *chain = l->data; |
|
|
|
|
|
struct codec_stats *stats_entry = g_hash_table_lookup(rtpe_codec_stats, chain); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
codec_stats_ht_iter iter; |
|
|
|
|
|
t_hash_table_iter_init(&iter, rtpe_codec_stats); |
|
|
|
|
|
char *chain; |
|
|
|
|
|
struct codec_stats *stats_entry; |
|
|
|
|
|
while (t_hash_table_iter_next(&iter, &chain, &stats_entry)) { |
|
|
HEADER("{", ""); |
|
|
HEADER("{", ""); |
|
|
METRICsva("chain", "\"%s\"", chain); |
|
|
METRICsva("chain", "\"%s\"", chain); |
|
|
METRICs("num", "%i", g_atomic_int_get(&stats_entry->num_transcoders)); |
|
|
METRICs("num", "%i", g_atomic_int_get(&stats_entry->num_transcoders)); |
|
|
@ -904,7 +906,6 @@ stats_metric_q *statistics_gather_metrics(struct interface_sampled_rate_stats *i |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
mutex_unlock(&rtpe_codec_stats_lock); |
|
|
mutex_unlock(&rtpe_codec_stats_lock); |
|
|
g_list_free(chains); |
|
|
|
|
|
HEADER("]", ""); |
|
|
HEADER("]", ""); |
|
|
|
|
|
|
|
|
HEADER("}", NULL); |
|
|
HEADER("}", NULL); |
|
|
@ -929,23 +930,24 @@ void statistics_free_metrics(stats_metric_q *q) { |
|
|
|
|
|
|
|
|
void statistics_free(void) { |
|
|
void statistics_free(void) { |
|
|
mutex_destroy(&rtpe_codec_stats_lock); |
|
|
mutex_destroy(&rtpe_codec_stats_lock); |
|
|
g_hash_table_destroy(rtpe_codec_stats); |
|
|
|
|
|
|
|
|
t_hash_table_destroy(rtpe_codec_stats); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
static void codec_stats_free(void *p) { |
|
|
|
|
|
struct codec_stats *stats_entry = p; |
|
|
|
|
|
|
|
|
static void codec_stats_free(struct codec_stats *stats_entry) { |
|
|
free(stats_entry->chain); |
|
|
free(stats_entry->chain); |
|
|
g_free(stats_entry->chain_brief); |
|
|
g_free(stats_entry->chain_brief); |
|
|
g_slice_free1(sizeof(*stats_entry), stats_entry); |
|
|
g_slice_free1(sizeof(*stats_entry), stats_entry); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
TYPED_GHASHTABLE_IMPL(codec_stats_ht, g_str_hash, g_str_equal, NULL, codec_stats_free) |
|
|
|
|
|
|
|
|
void statistics_init(void) { |
|
|
void statistics_init(void) { |
|
|
gettimeofday(&rtpe_started, NULL); |
|
|
gettimeofday(&rtpe_started, NULL); |
|
|
//rtpe_totalstats_interval.managed_sess_min = 0; // already zeroed |
|
|
//rtpe_totalstats_interval.managed_sess_min = 0; // already zeroed |
|
|
//rtpe_totalstats_interval.managed_sess_max = 0; |
|
|
//rtpe_totalstats_interval.managed_sess_max = 0; |
|
|
|
|
|
|
|
|
mutex_init(&rtpe_codec_stats_lock); |
|
|
mutex_init(&rtpe_codec_stats_lock); |
|
|
rtpe_codec_stats = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, codec_stats_free); |
|
|
|
|
|
|
|
|
rtpe_codec_stats = codec_stats_ht_new(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const char *statistics_ng(bencode_item_t *input, bencode_item_t *output) { |
|
|
const char *statistics_ng(bencode_item_t *input, bencode_item_t *output) { |
|
|
|