[asterisk-commits] mmichelson: trunk r84726 - /trunk/apps/app_queue.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Oct 4 17:58:26 CDT 2007


Author: mmichelson
Date: Thu Oct  4 17:58:26 2007
New Revision: 84726

URL: http://svn.digium.com/view/asterisk?view=rev&rev=84726
Log:
A two-in-one patch from the bugtracker

1) Fix some bad logic in the counting of statistics for QueueSummary manager event. Variables were not being
   reset for each additional queue, so cumulative totals were reported on each successive queue.

2) Add a longest hold time stat to QueueSummary manager event.


Modified:
    trunk/apps/app_queue.c

Modified: trunk/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_queue.c?view=diff&rev=84726&r1=84725&r2=84726
==============================================================================
--- trunk/apps/app_queue.c (original)
+++ trunk/apps/app_queue.c Thu Oct  4 17:58:26 2007
@@ -4426,6 +4426,7 @@
 	int qmemcount = 0;
 	int qmemavail = 0;
 	int qchancount = 0;
+	int qlongestholdtime = 0;
 	const char *id = astman_get_header(m, "ActionID");
 	const char *queuefilter = astman_get_header(m, "Queue");
 	char idText[256] = "";
@@ -4445,6 +4446,12 @@
 
 		/* List queue properties */
 		if (ast_strlen_zero(queuefilter) || !strcmp(q->name, queuefilter)) {
+			/* Reset the necessary local variables if no queuefilter is set*/
+			qmemcount = 0;
+			qmemavail = 0;
+			qchancount = 0;
+			qlongestholdtime = 0;
+
 			/* List Queue Members */
 			mem_iter = ao2_iterator_init(q->members, 0);
 			while ((mem = ao2_iterator_next(&mem_iter))) {
@@ -4457,6 +4464,9 @@
 				ao2_ref(mem, -1);
 			}
 			for (qe = q->head; qe; qe = qe->next) {
+				if ((now - qe->start) > qlongestholdtime) {
+					qlongestholdtime = now - qe->start;
+				}
 				++qchancount;
 			}
 			astman_append(s, "Event: QueueSummary\r\n"
@@ -4465,9 +4475,10 @@
 				"Available: %d\r\n"
 				"Callers: %d\r\n" 
 				"HoldTime: %d\r\n"
+				"LongestHoldTime: %d\r\n"
 				"%s"
 				"\r\n",
-				q->name, qmemcount, qmemavail, qchancount, q->holdtime, idText);
+				q->name, qmemcount, qmemavail, qchancount, q->holdtime, qlongestholdtime, idText);
 		}
 		ao2_unlock(q);
 		queue_unref(q);




More information about the asterisk-commits mailing list