[asterisk-commits] oej: trunk r276950 - in /trunk: CHANGES apps/app_queue.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Jul 16 04:25:52 CDT 2010


Author: oej
Date: Fri Jul 16 04:25:48 2010
New Revision: 276950

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=276950
Log:
Add a dialplan function to check if a queue exists: QUEUE_EXISTS

Review: https://reviewboard.asterisk.org/r/777/

Modified:
    trunk/CHANGES
    trunk/apps/app_queue.c

Modified: trunk/CHANGES
URL: http://svnview.digium.com/svn/asterisk/trunk/CHANGES?view=diff&rev=276950&r1=276949&r2=276950
==============================================================================
--- trunk/CHANGES (original)
+++ trunk/CHANGES Fri Jul 16 04:25:48 2010
@@ -267,6 +267,7 @@
    result is that if a member becomes auto-paused, he will be paused in all
    queues for which he is a member, not just the queue that failed to reach
    the member.
+ * Added dialplan function QUEUE_EXISTS to check if a queue exists
 
 mISDN channel driver (chan_misdn) changes
 ----------------------------------------

Modified: trunk/apps/app_queue.c
URL: http://svnview.digium.com/svn/asterisk/trunk/apps/app_queue.c?view=diff&rev=276950&r1=276949&r2=276950
==============================================================================
--- trunk/apps/app_queue.c (original)
+++ trunk/apps/app_queue.c Fri Jul 16 04:25:48 2010
@@ -469,6 +469,17 @@
 			<ref type="function">QUEUE_MEMBER_LIST</ref>
 		</see-also>
 	</function>
+	<function name="QUEUE_EXISTS" language="en_US">
+		<synopsis>
+			Check if a named queue exists on this server
+		</synopsis>
+		<syntax>
+			<parameter name="queuename" />
+		</syntax>
+		<description>
+			<para>Returns 1 if the specified queue exists, 0 if it does not</para>
+		</description>
+	</function>
 	<function name="QUEUE_WAITING_COUNT" language="en_US">
 		<synopsis>
 			Count number of calls currently waiting in a queue.
@@ -5926,6 +5937,29 @@
 	return 0;
 }
 
+/*!
+ * \brief Check if a given queue exists
+ *
+ */
+static int queue_function_exists(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
+{
+	struct call_queue *q;
+
+	buf[0] = '\0';
+
+	if (ast_strlen_zero(data)) {
+		ast_log(LOG_ERROR, "%s requires an argument: queuename\n", cmd);
+		return -1;
+	}
+	q = load_realtime_queue(data);
+	snprintf(buf, len, "%d", q != NULL? 1 : 0);
+	if (q) {
+		queue_t_unref(q, "Done with temporary reference in QUEUE_EXISTS()");
+	}
+
+	return 0;
+}
+
 /*! 
  * \brief Get number either busy / free / ready or total members of a specific queue
  * \retval number of members (busy / free / ready / total)
@@ -6191,6 +6225,11 @@
 
 	return 0;
 }
+
+static struct ast_custom_function queueexists_function = {
+	.name = "QUEUE_EXISTS",
+	.read = queue_function_exists,
+};
 
 static struct ast_custom_function queuevar_function = {
 	.name = "QUEUE_VARIABLES",
@@ -8038,6 +8077,7 @@
 	res |= ast_unregister_application(app_upqm);
 	res |= ast_unregister_application(app_ql);
 	res |= ast_unregister_application(app);
+	res |= ast_custom_function_unregister(&queueexists_function);
 	res |= ast_custom_function_unregister(&queuevar_function);
 	res |= ast_custom_function_unregister(&queuemembercount_function);
 	res |= ast_custom_function_unregister(&queuemembercount_dep);
@@ -8112,6 +8152,7 @@
 	res |= ast_manager_register_xml("QueueReload", 0, manager_queue_reload);
 	res |= ast_manager_register_xml("QueueReset", 0, manager_queue_reset);
 	res |= ast_custom_function_register(&queuevar_function);
+	res |= ast_custom_function_register(&queueexists_function);
 	res |= ast_custom_function_register(&queuemembercount_function);
 	res |= ast_custom_function_register(&queuemembercount_dep);
 	res |= ast_custom_function_register(&queuememberlist_function);




More information about the asterisk-commits mailing list