diff options
Diffstat (limited to 'gtk/sip_stat.c')
-rw-r--r-- | gtk/sip_stat.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/gtk/sip_stat.c b/gtk/sip_stat.c index 056f09d2dc..aa28c60fc5 100644 --- a/gtk/sip_stat.c +++ b/gtk/sip_stat.c @@ -56,8 +56,10 @@ typedef struct _sip_stats_t { GHashTable *hash_requests; guint32 packets; /* number of sip packets, including continuations */ guint32 resent_packets; + guint32 avrage_setup_time; GtkWidget *packets_label; GtkWidget *resent_label; + GtkWidget *avrage_setup_time_label; GtkWidget *request_box; /* container for INVITE, ... */ @@ -338,6 +340,7 @@ sipstat_reset(void *psp) { sp->packets = 0; sp->resent_packets = 0; + sp->avrage_setup_time = 0; g_hash_table_foreach(sp->hash_responses, (GHFunc)sip_reset_hash_responses, NULL); g_hash_table_foreach(sp->hash_requests, (GHFunc)sip_reset_hash_requests, NULL); } @@ -359,6 +362,14 @@ sipstat_packet(void *psp, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const sp->resent_packets++; } + /* Calculate avrage setup time */ + if (value->setup_time){ + /* Check if it's the first value */ + if ( sp->avrage_setup_time == 0 ){ + sp->avrage_setup_time = value->setup_time; + } + sp->avrage_setup_time = (sp->avrage_setup_time + value->setup_time)/2; + } /* Looking at both requests and responses */ if (value->response_code != 0) @@ -471,7 +482,12 @@ sipstat_draw(void *psp) g_hash_table_foreach(sp->hash_responses, (GHFunc)sip_draw_hash_responses, NULL); g_hash_table_foreach(sp->hash_requests, (GHFunc)sip_draw_hash_requests, NULL); - gtk_widget_show_all(sp->win); + /* Set resend count label */ + g_snprintf(string_buff, sizeof(string_buff), + "(Avrage setup time %d ms)", sp->avrage_setup_time); + gtk_label_set(GTK_LABEL(sp->avrage_setup_time_label), string_buff); + + gtk_widget_show_all(sp->win); } @@ -619,6 +635,11 @@ gtk_sipstat_init(const char *optarg, void *userdata _U_) sp->request_box = gtk_vbox_new(FALSE, 10); gtk_container_add(GTK_CONTAINER(request_fr), sp->request_box); + sp->avrage_setup_time = 0; + sp->avrage_setup_time_label = gtk_label_new("(Not calculated)"); + gtk_container_add(GTK_CONTAINER(main_vb), sp->avrage_setup_time_label); + gtk_widget_show(sp->avrage_setup_time_label); + /* Register this tap listener now */ error_string = register_tap_listener("sip", |