move stats and statsps into global scope

Change-Id: I02d16e31f8980bd0ef3ff3a190b23dc61c087018
pull/432/merge
Richard Fuchs 8 years ago
parent cf3a8f9e16
commit c969ea1e57

@ -116,6 +116,9 @@ const struct transport_protocol transport_protocols[] = {
};
const int num_transport_protocols = G_N_ELEMENTS(transport_protocols);
/* XXX rework these */
struct stats rtpe_statsps;
struct stats rtpe_stats;
rwlock_t rtpe_callhash_lock;
GHashTable *rtpe_callhash;
@ -463,7 +466,7 @@ destroy:
else \
d = ke->stats.x - ks_val; \
atomic64_add(&ps->stats.x, d); \
atomic64_add(&m->statsps.x, d); \
atomic64_add(&rtpe_statsps.x, d); \
} while (0)
static void callmaster_timer(void *ptr) {
struct callmaster *m = ptr;
@ -495,13 +498,13 @@ static void callmaster_timer(void *ptr) {
g_list_foreach(calls, call_timer_iterator, &hlp);
g_list_free_full(calls, call_obj_put);
}
atomic64_local_copy_zero_struct(&tmpstats, &m->statsps, bytes);
atomic64_local_copy_zero_struct(&tmpstats, &m->statsps, packets);
atomic64_local_copy_zero_struct(&tmpstats, &m->statsps, errors);
atomic64_local_copy_zero_struct(&tmpstats, &rtpe_statsps, bytes);
atomic64_local_copy_zero_struct(&tmpstats, &rtpe_statsps, packets);
atomic64_local_copy_zero_struct(&tmpstats, &rtpe_statsps, errors);
atomic64_set(&m->stats.bytes, atomic64_get_na(&tmpstats.bytes));
atomic64_set(&m->stats.packets, atomic64_get_na(&tmpstats.packets));
atomic64_set(&m->stats.errors, atomic64_get_na(&tmpstats.errors));
atomic64_set(&rtpe_stats.bytes, atomic64_get_na(&tmpstats.bytes));
atomic64_set(&rtpe_stats.packets, atomic64_get_na(&tmpstats.packets));
atomic64_set(&rtpe_stats.errors, atomic64_get_na(&tmpstats.errors));
i = kernel_list();
while (i) {

@ -416,9 +416,6 @@ struct callmaster_config {
struct callmaster {
struct obj obj;
/* XXX rework these */
struct stats statsps; /* per second stats, running timer */
struct stats stats; /* copied from statsps once a second */
struct totalstats totalstats;
struct totalstats totalstats_interval;
mutex_t totalstats_lastinterval_lock;
@ -432,6 +429,9 @@ struct callmaster {
extern rwlock_t rtpe_callhash_lock;
extern GHashTable *rtpe_callhash;
extern struct stats rtpe_statsps; /* per second stats, running timer */
extern struct stats rtpe_stats; /* copied from statsps once a second */
struct callmaster *callmaster_new(void);
void callmaster_get_all_calls(struct callmaster *m, GQueue *q);

@ -452,7 +452,7 @@ void calls_status_tcp(struct callmaster *m, struct streambuf_stream *s) {
streambuf_printf(s->outbuf, "proxy %u "UINT64F"/%i/%i\n",
g_queue_get_length(&q),
atomic64_get(&m->stats.bytes), 0, 0);
atomic64_get(&rtpe_stats.bytes), 0, 0);
while (q.head) {
c = g_queue_pop_head(&q);
@ -818,7 +818,7 @@ const char *call_offer_ng(bencode_item_t *input, struct callmaster *m, bencode_i
if (m->conf.max_sessions>=0) {
rwlock_lock_r(&rtpe_callhash_lock);
if (g_hash_table_size(rtpe_callhash) -
atomic64_get(&m->stats.foreign_sessions) >= m->conf.max_sessions) {
atomic64_get(&rtpe_stats.foreign_sessions) >= m->conf.max_sessions) {
rwlock_unlock_r(&rtpe_callhash_lock);
/* foreign calls can't get rejected
* total_rejected_sess applies only to "own" sessions */

@ -254,8 +254,8 @@ static void cli_incoming_list_totals(str *instr, struct callmaster* m, struct st
static void cli_incoming_list_numsessions(str *instr, struct callmaster* m, struct streambuf *replybuffer) {
rwlock_lock_r(&rtpe_callhash_lock);
streambuf_printf(replybuffer, "Current sessions own: "UINT64F"\n", g_hash_table_size(rtpe_callhash) - atomic64_get(&m->stats.foreign_sessions));
streambuf_printf(replybuffer, "Current sessions foreign: "UINT64F"\n", atomic64_get(&m->stats.foreign_sessions));
streambuf_printf(replybuffer, "Current sessions own: "UINT64F"\n", g_hash_table_size(rtpe_callhash) - atomic64_get(&rtpe_stats.foreign_sessions));
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);
}

@ -136,7 +136,7 @@ int send_graphite_data(struct callmaster *cm, struct totalstats *sent_data) {
ts->managed_sess_max = cm->totalstats_interval.managed_sess_max;
ts->managed_sess_min = cm->totalstats_interval.managed_sess_min;
ts->total_sessions = g_hash_table_size(rtpe_callhash);
ts->foreign_sessions = atomic64_get(&cm->stats.foreign_sessions);
ts->foreign_sessions = atomic64_get(&rtpe_stats.foreign_sessions);
ts->own_sessions = ts->total_sessions - ts->foreign_sessions;
cm->totalstats_interval.managed_sess_max = ts->own_sessions;;
cm->totalstats_interval.managed_sess_min = ts->own_sessions;

@ -1198,7 +1198,6 @@ static int stream_packet(struct stream_fd *sfd, str *s, const endpoint_t *fsin,
unk = 0;
int i;
struct call *call;
struct callmaster *cm;
/*unsigned char cc;*/
struct endpoint endpoint;
rewrite_func rwf_in, rwf_out;
@ -1209,7 +1208,6 @@ static int stream_packet(struct stream_fd *sfd, str *s, const endpoint_t *fsin,
struct ssrc_ctx *ssrc_in = NULL, *ssrc_out = NULL;
call = sfd->call;
cm = call->callmaster;
rwlock_lock_r(&call->master_lock);
@ -1319,7 +1317,7 @@ loop_ok:
ilog(LOG_WARNING | LOG_FLAG_LIMIT,
"RTP packet with unknown payload type %u received", i);
atomic64_inc(&stream->stats.errors);
atomic64_inc(&cm->statsps.errors);
atomic64_inc(&rtpe_statsps.errors);
}
else {
@ -1338,7 +1336,7 @@ loop_ok:
if (G_UNLIKELY(!sink || !sink->selected_sfd || !out_srtp || !out_srtp->selected_sfd || !in_srtp->selected_sfd)) {
ilog(LOG_WARNING, "RTP packet from %s discarded", endpoint_print_buf(fsin));
atomic64_inc(&stream->stats.errors);
atomic64_inc(&cm->statsps.errors);
atomic64_inc(&rtpe_statsps.errors);
goto unlock_out;
}
@ -1511,7 +1509,7 @@ forward:
ret = -errno;
ilog(LOG_DEBUG,"Error when sending message. Error: %s",strerror(errno));
atomic64_inc(&stream->stats.errors);
atomic64_inc(&cm->statsps.errors);
atomic64_inc(&rtpe_statsps.errors);
goto out;
}
@ -1524,8 +1522,8 @@ drop:
atomic64_inc(&stream->stats.packets);
atomic64_add(&stream->stats.bytes, s->len);
atomic64_set(&stream->last_packet, rtpe_now.tv_sec);
atomic64_inc(&cm->statsps.packets);
atomic64_add(&cm->statsps.bytes, s->len);
atomic64_inc(&rtpe_statsps.packets);
atomic64_add(&rtpe_statsps.bytes, s->len);
out:
if (ret == 0 && update)

@ -76,13 +76,13 @@ void statistics_update_foreignown_dec(struct call* c) {
m = c->callmaster;
if (IS_FOREIGN_CALL(c)) {
atomic64_dec(&m->stats.foreign_sessions);
atomic64_dec(&rtpe_stats.foreign_sessions);
}
if(IS_OWN_CALL(c)) {
mutex_lock(&m->totalstats_interval.managed_sess_lock);
m->totalstats_interval.managed_sess_min = MIN(m->totalstats_interval.managed_sess_min,
g_hash_table_size(rtpe_callhash) - atomic64_get(&m->stats.foreign_sessions));
g_hash_table_size(rtpe_callhash) - atomic64_get(&rtpe_stats.foreign_sessions));
mutex_unlock(&m->totalstats_interval.managed_sess_lock);
}
@ -94,11 +94,11 @@ void statistics_update_foreignown_inc(struct callmaster *m, struct call* c) {
m->totalstats_interval.managed_sess_max = MAX(
m->totalstats_interval.managed_sess_max,
g_hash_table_size(rtpe_callhash)
- atomic64_get(&m->stats.foreign_sessions));
- atomic64_get(&rtpe_stats.foreign_sessions));
mutex_unlock(&m->totalstats_interval.managed_sess_lock);
}
else if (IS_FOREIGN_CALL(c)) { /* foreign call*/
atomic64_inc(&m->stats.foreign_sessions);
atomic64_inc(&rtpe_stats.foreign_sessions);
atomic64_inc(&m->totalstats.total_foreign_sessions);
}

Loading…
Cancel
Save