[asterisk-commits] eliel: branch group/per_member_wrapuptime r194210 - in /team/group/per_member...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed May 13 08:40:13 CDT 2009
Author: eliel
Date: Wed May 13 08:40:10 2009
New Revision: 194210
URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=194210
Log:
- Rename the QueueWrapuptime action to QueueMemberWrapuptime.
- New AMI action QueueMemberNextWrapuptime to specify the wrapuptime only for
the next call.
- Make the CLI command 'queue set member wrapuptime' to modify only the static configuration
and no the next wrapuptime value.
Modified:
team/group/per_member_wrapuptime/CHANGES
team/group/per_member_wrapuptime/apps/app_queue.c
team/group/per_member_wrapuptime/doc/manager_1_1.txt
Modified: team/group/per_member_wrapuptime/CHANGES
URL: http://svn.asterisk.org/svn-view/asterisk/team/group/per_member_wrapuptime/CHANGES?view=diff&rev=194210&r1=194209&r2=194210
==============================================================================
--- team/group/per_member_wrapuptime/CHANGES (original)
+++ team/group/per_member_wrapuptime/CHANGES Wed May 13 08:40:10 2009
@@ -495,6 +495,9 @@
AMI - The manager (TCP/TLS/HTTP)
--------------------------------
+ * New AMI action 'QueueMemberWrapuptime to specify a members wrapuptime.
+ * New AMI action 'QueueMemberNextWrapuptime' to specify a members wrapuptime for
+ the next call.
* The Status command now takes an optional list of variables to display
along with channel status.
* The QueueEntry event now also includes the channel's uniqueid
Modified: team/group/per_member_wrapuptime/apps/app_queue.c
URL: http://svn.asterisk.org/svn-view/asterisk/team/group/per_member_wrapuptime/apps/app_queue.c?view=diff&rev=194210&r1=194209&r2=194210
==============================================================================
--- team/group/per_member_wrapuptime/apps/app_queue.c (original)
+++ team/group/per_member_wrapuptime/apps/app_queue.c Wed May 13 08:40:10 2009
@@ -4498,6 +4498,12 @@
if (ast_strlen_zero(queuename) || !strcasecmp(q->name, queuename)) {
if ((mem = interface_exists(q, interface))) {
foundinterface++;
+ /* this wrapuptime will be used only for the next call to this agent. */
+ if (absolute_value) {
+ mem->current_wrapuptime = offset;
+ } else {
+ mem->current_wrapuptime += offset;
+ }
/* modify static configuration. */
if (modify_defaults) {
if (absolute_value) {
@@ -4515,12 +4521,14 @@
"Interface: %s\r\n"
"Wrapuptime: %d\r\n",
q->name, mem->interface, mem->wrapuptime);
- }
- /* this wrapuptime will be used only for the next call to this agent. */
- if (absolute_value) {
- mem->current_wrapuptime = offset;
} else {
- mem->current_wrapuptime += offset;
+ ast_queue_log(q->name, "NONE", interface, "NEXTWRAPUPTIME", "%d", mem->current_wrapuptime);
+ manager_event(EVENT_FLAG_AGENT, "QueueMemberNextWrapuptime",
+ "Queue: %s\r\n"
+ "Interface: %s\r\n"
+ "Wrapuptime: %d\r\n",
+ q->name, mem->interface, mem->current_wrapuptime);
+
}
ao2_ref(mem, -1);
}
@@ -6367,7 +6375,7 @@
mem->paused ? " (paused)" : "",
ast_devstate2str(mem->status));
if (mem->wrapuptime >= 0) {
- ast_str_append(&out, 0, " (wrapuptime = %d)", mem->wrapuptime);
+ ast_str_append(&out, 0, " (wrapuptime = %d/%d)", mem->wrapuptime, mem->current_wrapuptime);
}
if (mem->calls)
ast_str_append(&out, 0, " has taken %d calls (last was %ld secs ago) ",
@@ -6903,35 +6911,53 @@
/*!
* \internal
+ * \brief Modify the queue member wrapuptime based on the manager request.
+ */
+static int handle_manager_queue_member_wrapuptime(struct mansession *s, const struct message *m, int only_static)
+{
+ const char *interface, *wrapuptime, *queue;
+ int is_absolute = 1, value;
+
+ interface = astman_get_header(m, "Interface");
+ queue = astman_get_header(m, "Queue");
+ wrapuptime = astman_get_header(m, "Wrapuptime");
+
+ if (ast_strlen_zero(interface) || ast_strlen_zero(wrapuptime)) {
+ astman_send_error(s, m, "Need 'Interface' and 'Wrapuptime' parameters.");
+ return 0;
+ }
+
+ if (strchr(wrapuptime, '+') || strchr(wrapuptime, '-')) {
+ is_absolute = 0;
+ }
+
+ value = atoi(wrapuptime);
+
+ if (set_member_wrapuptime(queue, interface, value, only_static, is_absolute) < 0) {
+ astman_send_error(s, m, "Error while modifying the member wrapuptime.");
+ }
+
+ astman_send_ack(s, m, "Member wrapuptime modified.");
+
+ return 0;
+}
+
+/*!
+ * \internal
* \brief Manager action to set the queue member wrapuptime.
*/
static int manager_queue_member_wrapuptime(struct mansession *s, const struct message *m)
{
- const char *interface, *wrapuptime, *queue;
- int is_absolute = 1, value;
-
- interface = astman_get_header(m, "Interface");
- queue = astman_get_header(m, "Queue");
- wrapuptime = astman_get_header(m, "Wrapuptime");
-
- if (ast_strlen_zero(interface) || ast_strlen_zero(wrapuptime)) {
- astman_send_error(s, m, "Need 'Interface' and 'Wrapuptime' parameters.");
- return 0;
- }
-
- if (strchr(wrapuptime, '+') || strchr(wrapuptime, '-')) {
- is_absolute = 0;
- }
-
- value = atoi(wrapuptime);
-
- if (set_member_wrapuptime(queue, interface, value, 1, is_absolute) < 0) {
- astman_send_error(s, m, "Error while modifying the member wrapuptime.");
- }
-
- astman_send_ack(s, m, "Member wrapuptime modified.");
-
- return 0;
+ return handle_manager_queue_member_wrapuptime(s, m, 1);
+}
+
+/*!
+ * \internal
+ * \brief Manager action to set the queue member next wrapuptime.
+ */
+static int manager_queue_member_next_wrapuptime(struct mansession *s, const struct message *m)
+{
+ return handle_manager_queue_member_wrapuptime(s, m, 0);
}
static char *handle_queue_add_member(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
@@ -7581,7 +7607,9 @@
res |= ast_manager_register("QueuePause", EVENT_FLAG_AGENT, manager_pause_queue_member, "Makes a queue member temporarily unavailable");
res |= ast_manager_register("QueueLog", EVENT_FLAG_AGENT, manager_queue_log_custom, "Adds custom entry in queue_log");
res |= ast_manager_register("QueuePenalty", EVENT_FLAG_AGENT, manager_queue_member_penalty, "Set the penalty for a queue member");
- res |= ast_manager_register("QueueWrapuptime", EVENT_FLAG_AGENT, manager_queue_member_wrapuptime, "Set the wrapuptime for a queue member");
+ res |= ast_manager_register("QueueMemberWrapuptime", EVENT_FLAG_AGENT, manager_queue_member_wrapuptime, "Set the wrapuptime for a queue member.");
+ res |= ast_manager_register("QueueMemberNextWrapuptime", EVENT_FLAG_AGENT, manager_queue_member_next_wrapuptime,
+ "Set the wrapuptime for a queue member, only for the next call.");
res |= ast_manager_register("QueueRule", 0, manager_queue_rule_show, "Queue Rules");
res |= ast_manager_register("QueueReload", 0, manager_queue_reload, "Reload a queue, queues, or any sub-section of a queue or queues");
res |= ast_manager_register("QueueReset", 0, manager_queue_reset, "Reset queue statistics");
Modified: team/group/per_member_wrapuptime/doc/manager_1_1.txt
URL: http://svn.asterisk.org/svn-view/asterisk/team/group/per_member_wrapuptime/doc/manager_1_1.txt?view=diff&rev=194210&r1=194209&r2=194210
==============================================================================
--- team/group/per_member_wrapuptime/doc/manager_1_1.txt (original)
+++ team/group/per_member_wrapuptime/doc/manager_1_1.txt Wed May 13 08:40:10 2009
@@ -138,18 +138,27 @@
* NEW ACTIONS
-------------
-- Action: QueueWrapuptime
- Modules: app_queue
- Purpose:
- Set the queue members wrapuptime, also disable the wrapuptime or
- increment it for the next call.
+- Action: QueueMemberWrapuptime
+ Modules: app_queue
+ Purpose:
+ Set the queue members wrapuptime.
Variables:
ActionID: <id> Action ID for this transaction. WIll be returned.
Interface: <member> The member interface name.
Queue: <queuename> (optional) Specify a queue to only apply the changes
for the member in that queue.
- Static: <boolean> If 'true' apply the change to the member configuration,
- if 'false' only apply the change to the next call.
+ Wrapuptime: <value> The wrapuptime integer value to set, if a + o - is specified,
+ the value is treated as an offset of the current wrapuptime
+ value.
+- Action: QueueMemberNextWrapuptime
+ Modules: app_queue
+ Purpose:
+ Set the queue members wrapuptime only for the next call.
+ Variables:
+ ActionID: <id> Action ID for this transaction. WIll be returned.
+ Interface: <member> The member interface name.
+ Queue: <queuename> (optional) Specify a queue to only apply the changes
+ for the member in that queue.
Wrapuptime: <value> The wrapuptime integer value to set, if a + o - is specified,
the value is treated as an offset of the current wrapuptime
value.
More information about the asterisk-commits
mailing list