mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 19:16:15 +00:00
func_channel: Add CHANNEL_EXISTS function.
Adds a function to check for the existence of a channel by name or by UNIQUEID. ASTERISK-29656 #close Change-Id: Ib464e9eb6e13dc683a846286798fecff4fd943cb
This commit is contained in:
committed by
Friendly Automation
parent
5abf499d23
commit
de6ecd5e34
4
doc/CHANGES-staging/func_channel.txt
Normal file
4
doc/CHANGES-staging/func_channel.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
Subject: func_channel
|
||||||
|
|
||||||
|
Adds the CHANNEL_EXISTS function to check for the existence
|
||||||
|
of a channel by name or unique ID.
|
@@ -20,6 +20,7 @@
|
|||||||
*
|
*
|
||||||
* \author Kevin P. Fleming <kpfleming@digium.com>
|
* \author Kevin P. Fleming <kpfleming@digium.com>
|
||||||
* \author Ben Winslow
|
* \author Ben Winslow
|
||||||
|
* \author Naveen Albert <asterisk@phreaknet.org>
|
||||||
*
|
*
|
||||||
* \ingroup functions
|
* \ingroup functions
|
||||||
*/
|
*/
|
||||||
@@ -62,6 +63,19 @@
|
|||||||
will be space-delimited.</para>
|
will be space-delimited.</para>
|
||||||
</description>
|
</description>
|
||||||
</function>
|
</function>
|
||||||
|
<function name="CHANNEL_EXISTS" language="en_US">
|
||||||
|
<synopsis>
|
||||||
|
Checks if the specified channel exists.
|
||||||
|
</synopsis>
|
||||||
|
<syntax>
|
||||||
|
<parameter name="name_or_uid" required="true">
|
||||||
|
<para>The name or unique ID of the channel to check.</para>
|
||||||
|
</parameter>
|
||||||
|
</syntax>
|
||||||
|
<description>
|
||||||
|
<para>Returns 1 if the channel <replaceable>name_or_uid</replaceable> exists, 0 if not.</para>
|
||||||
|
</description>
|
||||||
|
</function>
|
||||||
<function name="MASTER_CHANNEL" language="en_US">
|
<function name="MASTER_CHANNEL" language="en_US">
|
||||||
<synopsis>
|
<synopsis>
|
||||||
Gets or sets variables on the master channel
|
Gets or sets variables on the master channel
|
||||||
@@ -711,6 +725,28 @@ static struct ast_custom_function channels_function = {
|
|||||||
.read = func_channels_read,
|
.read = func_channels_read,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int func_chan_exists_read(struct ast_channel *chan, const char *function, char *data, char *buf, size_t maxlen)
|
||||||
|
{
|
||||||
|
struct ast_channel *chan_found = NULL;
|
||||||
|
|
||||||
|
if (ast_strlen_zero(data)) {
|
||||||
|
ast_log(LOG_WARNING, "%s: Channel name or unique ID required\n", function);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
chan_found = ast_channel_get_by_name(data);
|
||||||
|
snprintf(buf, maxlen, "%d", (chan_found ? 1 : 0));
|
||||||
|
if (chan_found) {
|
||||||
|
ast_channel_unref(chan_found);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct ast_custom_function chan_exists_function = {
|
||||||
|
.name = "CHANNEL_EXISTS",
|
||||||
|
.read = func_chan_exists_read,
|
||||||
|
};
|
||||||
|
|
||||||
static int func_mchan_read(struct ast_channel *chan, const char *function,
|
static int func_mchan_read(struct ast_channel *chan, const char *function,
|
||||||
char *data, struct ast_str **buf, ssize_t len)
|
char *data, struct ast_str **buf, ssize_t len)
|
||||||
{
|
{
|
||||||
@@ -761,6 +797,7 @@ static int unload_module(void)
|
|||||||
|
|
||||||
res |= ast_custom_function_unregister(&channel_function);
|
res |= ast_custom_function_unregister(&channel_function);
|
||||||
res |= ast_custom_function_unregister(&channels_function);
|
res |= ast_custom_function_unregister(&channels_function);
|
||||||
|
res |= ast_custom_function_unregister(&chan_exists_function);
|
||||||
res |= ast_custom_function_unregister(&mchan_function);
|
res |= ast_custom_function_unregister(&mchan_function);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
@@ -772,6 +809,7 @@ static int load_module(void)
|
|||||||
|
|
||||||
res |= ast_custom_function_register(&channel_function);
|
res |= ast_custom_function_register(&channel_function);
|
||||||
res |= ast_custom_function_register(&channels_function);
|
res |= ast_custom_function_register(&channels_function);
|
||||||
|
res |= ast_custom_function_register(&chan_exists_function);
|
||||||
res |= ast_custom_function_register(&mchan_function);
|
res |= ast_custom_function_register(&mchan_function);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
Reference in New Issue
Block a user