summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib/pjsua_settings.c
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-04-09 16:46:05 +0000
committerBenny Prijono <bennylp@teluu.com>2006-04-09 16:46:05 +0000
commit7c33ce56e9b9399e0f437553102d9a4d612502f7 (patch)
treee783ecf01cb824448a6d9fbf8dc0bef7eee53f78 /pjsip/src/pjsua-lib/pjsua_settings.c
parent3cbe17249a51ff90ecb1eac049d2d655229bb6c9 (diff)
Added call duration in pjsua
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@398 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_settings.c')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_settings.c43
1 files changed, 38 insertions, 5 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_settings.c b/pjsip/src/pjsua-lib/pjsua_settings.c
index 334413b6..4a02ca11 100644
--- a/pjsip/src/pjsua-lib/pjsua_settings.c
+++ b/pjsip/src/pjsua-lib/pjsua_settings.c
@@ -693,7 +693,7 @@ static void dump_media_session(pjmedia_session *session)
PJ_LOG(3,(THIS_FILE,
" RX pt=%d, stat last update: %s\n"
- " total %s packets %sB received (%sB +IP hdr)%s\n"
+ " total %spkt %sB (%sB +IP hdr)%s\n"
" pkt loss=%d (%3.1f%%), dup=%d (%3.1f%%), reorder=%d (%3.1f%%)%s\n"
" (msec) min avg max last\n"
" loss period: %7.3f %7.3f %7.3f %7.3f%s\n"
@@ -738,7 +738,7 @@ static void dump_media_session(pjmedia_session *session)
PJ_LOG(3,(THIS_FILE,
" TX pt=%d, stat last update: %s\n"
- " total %s packets %sB received (%sB +IP hdr)%s\n"
+ " total %spkt %sB (%sB +IP hdr)%s\n"
" pkt loss=%d (%3.1f%%), dup=%d (%3.1f%%), reorder=%d (%3.1f%%)%s\n"
" (msec) min avg max last\n"
" loss period: %7.3f %7.3f %7.3f %7.3f%s\n"
@@ -815,14 +815,47 @@ void pjsua_dump(pj_bool_t detail)
for (i=0; i<pjsua.max_calls; ++i) {
- if (pjsua.calls[i].inv == NULL)
+ pjsua_call *call = &pjsua.calls[i];
+ pj_time_val duration, res_delay, con_delay;
+
+ if (call->inv == NULL)
continue;
print_call(" ", i, buf, sizeof(buf));
PJ_LOG(3,(THIS_FILE, "%s", buf));
- if (pjsua.calls[i].session)
- dump_media_session(pjsua.calls[i].session);
+ /* Calculate call duration */
+ if (call->inv->state >= PJSIP_INV_STATE_CONFIRMED) {
+ pj_gettimeofday(&duration);
+ PJ_TIME_VAL_SUB(duration, call->conn_time);
+ con_delay = call->conn_time;
+ PJ_TIME_VAL_SUB(con_delay, call->start_time);
+ } else {
+ duration.sec = duration.msec = 0;
+ con_delay.sec = con_delay.msec = 0;
+ }
+
+ /* Calculate first response delay */
+ if (call->inv->state >= PJSIP_INV_STATE_EARLY) {
+ res_delay = call->res_time;
+ PJ_TIME_VAL_SUB(res_delay, call->start_time);
+ } else {
+ res_delay.sec = res_delay.msec = 0;
+ }
+
+ /* Print duration */
+ PJ_LOG(3,(THIS_FILE,
+ " Call time: %02dh:%02dm:%02ds, "
+ "1st res in %d ms, conn in %dms",
+ (duration.sec / 3600),
+ ((duration.sec % 3600)/60),
+ (duration.sec % 60),
+ PJ_TIME_VAL_MSEC(res_delay),
+ PJ_TIME_VAL_MSEC(con_delay)));
+
+ /* Dump session statistics */
+ if (call->session)
+ dump_media_session(call->session);
}
}