void stats_global_calc (void) { stats_event_t event; avl_node *anode; char buffer [VAL_BUFSIZE]; connection_stats (); avl_tree_rlock (_stats.global_tree); anode = avl_get_first(_stats.global_tree); while (anode) { stats_node_t *node = (stats_node_t *)anode->key; if (node->flags & STATS_REGULAR) stats_listener_send (node->flags, "EVENT global %s %s\n", node->name, node->value); anode = avl_get_next (anode); } avl_tree_unlock (_stats.global_tree); build_event (&event, NULL, "outgoing_kbitrate", buffer); event.flags = STATS_COUNTERS|STATS_HIDDEN; snprintf (buffer, sizeof(buffer), "%" PRIu64, (int64_t)global_getrate_avg (global.out_bitrate) * 8 / 1024); process_event (&event); }
connection_stats get_connection_stats(connection connection_num) { const ana::stats* stats = ana_manager.get_stats( connection_num ); if ( stats == NULL ) throw std::runtime_error("Invalid connection ID to get stats from."); else return connection_stats( stats->bytes_out(), stats->bytes_in(), stats->uptime() ); }