Add option 'keepstats' which will keep queue statistics during a reload. (issue ...
authorJoshua Colp <jcolp@digium.com>
Mon, 2 Oct 2006 15:40:38 +0000 (15:40 +0000)
committerJoshua Colp <jcolp@digium.com>
Mon, 2 Oct 2006 15:40:38 +0000 (15:40 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@44150 65c4cc65-6c06-0410-ace0-fbb531ad65f3

CHANGES
apps/app_queue.c
configs/queues.conf.sample

diff --git a/CHANGES b/CHANGES
index f9c6920..4db3256 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -17,3 +17,5 @@ Changes since Asterisk 1.4-beta was branched:
      can use --with-cap to specify the path.
   * H323 remote hold notification support added (by NOTIFY message
      and/or H.450 supplementary service)
+  * Added keepstats option to queues.conf which will keep queue
+     statistics during a reload.
index 6d1df42..6ec3c4e 100644 (file)
@@ -238,6 +238,9 @@ static const char *pm_family = "/Queue/PersistentMembers";
 #define PM_MAX_LEN 8192
 
 /*! \brief queues.conf [general] option */
+static int queue_keep_stats = 0;
+
+/*! \brief queues.conf [general] option */
 static int queue_persistent_members = 0;
 
 /*! \brief queues.conf per-queue weight option */
@@ -3699,6 +3702,9 @@ static int reload_queues(void)
        while ((cat = ast_category_browse(cfg, cat)) ) {
                if (!strcasecmp(cat, "general")) {      
                        /* Initialize global settings */
+                       queue_keep_stats = 0;
+                       if ((general_val = ast_variable_retrieve(cfg, "general", "keepstats")))
+                               queue_keep_stats = ast_true(general_val);
                        queue_persistent_members = 0;
                        if ((general_val = ast_variable_retrieve(cfg, "general", "persistentmembers")))
                                queue_persistent_members = ast_true(general_val);
@@ -3728,7 +3734,8 @@ static int reload_queues(void)
                                        ast_mutex_lock(&q->lock);
                                /* Re-initialize the queue, and clear statistics */
                                init_queue(q);
-                               clear_queue(q);
+                               if (!queue_keep_stats) 
+                                       clear_queue(q);
                                for (cur = q->members; cur; cur = cur->next) {
                                        if (!cur->dynamic) {
                                                cur->delme = 1;
index f8582af..42c1e89 100644 (file)
@@ -8,6 +8,11 @@
 ;    read into their recorded queues. Default is 'yes'.
 ;
 persistentmembers = yes
+;
+; Keep Stats
+;    Keep queue statistics during a reload. Default is 'no'
+;
+keepstats = no
 ; 
 ; AutoFill Behavior
 ;    The old/current behavior of the queue has a serial type behavior