You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kamailio/modules/cdp/cdp_stats.c

49 lines
1.3 KiB

#include "cdp_stats.h"
struct cdp_counters_h cdp_cnts_h;
enum sctp_info_req { CDP_AVG_RSP };
static counter_val_t cdp_internal_stats(counter_handle_t h, void* what);
counter_def_t cdp_cnt_defs[] = {
{&cdp_cnts_h.timeout, "timeout", 0, 0, 0,
"number of timeouts on CDP requests"},
{&cdp_cnts_h.replies_received, "replies_received", 0, 0, 0,
"total number of replies received"},
{&cdp_cnts_h.replies_response_time, "replies_response_time", 0, 0, 0,
"total time waiting for replies"},
{&cdp_cnts_h.queuelength, "queuelength", 0, 0, 0,
"current length of worker queue tasks"},
{0, "average_response_time", 0,
cdp_internal_stats, (void*) (long) CDP_AVG_RSP,
"average response time for CDP replies"},
{0, 0, 0, 0, 0, 0}
};
int cdp_init_counters() {
if (counter_register_array("cdp", cdp_cnt_defs) < 0)
goto error;
return 0;
error:
return -1;
}
void cdp_destroy_counters() {
}
/** helper function for some stats (which are kept internally).
*/
static counter_val_t cdp_internal_stats(counter_handle_t h, void* what) {
enum sctp_info_req w;
w = (int) (long) what;
switch (w) {
case CDP_AVG_RSP:
if (counter_get_val(cdp_cnts_h.replies_received) == 0)
return 0;
else
return counter_get_val(cdp_cnts_h.replies_response_time)/counter_get_val(cdp_cnts_h.replies_received);
};
return 0;
}