#include "asterisk.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include "asterisk/module.h"
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/logger.h"
#include "asterisk/utils.h"
#include "asterisk/app.h"
Include dependency graph for func_groupcount.c:
Go to the source code of this file.
Functions | |
AST_MODULE_INFO_STANDARD (ASTERISK_GPL_KEY,"Channel group dialplan functions") | |
static int | group_count_function_read (struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) |
static int | group_function_read (struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) |
static int | group_function_write (struct ast_channel *chan, char *cmd, char *data, const char *value) |
static int | group_list_function_read (struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) |
static int | group_match_count_function_read (struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) |
static int | load_module (void) |
static int | unload_module (void) |
Variables | |
static struct ast_custom_function | group_count_function |
static struct ast_custom_function | group_function |
static struct ast_custom_function | group_list_function |
static struct ast_custom_function | group_match_count_function |
Definition in file func_groupcount.c.
AST_MODULE_INFO_STANDARD | ( | ASTERISK_GPL_KEY | , | |
"Channel group dialplan functions" | ||||
) |
static int group_count_function_read | ( | struct ast_channel * | chan, | |
char * | cmd, | |||
char * | data, | |||
char * | buf, | |||
size_t | len | |||
) | [static] |
Definition at line 40 of file func_groupcount.c.
References ast_app_group_get_count(), ast_app_group_split_group(), ast_log(), group, and LOG_NOTICE.
00042 { 00043 int count = -1; 00044 char group[80] = "", category[80] = ""; 00045 00046 ast_app_group_split_group(data, group, sizeof(group), category, 00047 sizeof(category)); 00048 00049 if ((count = ast_app_group_get_count(group, category)) == -1) 00050 ast_log(LOG_NOTICE, "No group could be found for channel '%s'\n", chan->name); 00051 else 00052 snprintf(buf, len, "%d", count); 00053 00054 return 0; 00055 }
static int group_function_read | ( | struct ast_channel * | chan, | |
char * | cmd, | |||
char * | data, | |||
char * | buf, | |||
size_t | len | |||
) | [static] |
Definition at line 98 of file func_groupcount.c.
References ast_app_group_list_head(), ast_app_group_list_lock(), ast_app_group_list_unlock(), AST_LIST_NEXT, ast_strlen_zero(), ast_group_info::category, ast_group_info::chan, and ast_group_info::group.
00100 { 00101 struct ast_group_info *gi = NULL; 00102 00103 ast_app_group_list_lock(); 00104 00105 gi = ast_app_group_list_head(); 00106 while (gi) { 00107 if (gi->chan != chan) 00108 continue; 00109 if (ast_strlen_zero(data)) 00110 break; 00111 if (!ast_strlen_zero(gi->category) && !strcasecmp(gi->category, data)) 00112 break; 00113 gi = AST_LIST_NEXT(gi, list); 00114 } 00115 00116 if (gi) 00117 ast_copy_string(buf, gi->group, len); 00118 00119 ast_app_group_list_unlock(); 00120 00121 return 0; 00122 }
static int group_function_write | ( | struct ast_channel * | chan, | |
char * | cmd, | |||
char * | data, | |||
const char * | value | |||
) | [static] |
Definition at line 124 of file func_groupcount.c.
References ast_app_group_set_channel(), ast_log(), ast_strlen_zero(), ast_group_info::chan, and LOG_WARNING.
00126 { 00127 char grpcat[256]; 00128 00129 if (!ast_strlen_zero(data)) { 00130 snprintf(grpcat, sizeof(grpcat), "%s@%s", value, data); 00131 } else { 00132 ast_copy_string(grpcat, value, sizeof(grpcat)); 00133 } 00134 00135 if (ast_app_group_set_channel(chan, grpcat)) 00136 ast_log(LOG_WARNING, 00137 "Setting a group requires an argument (group name)\n"); 00138 00139 return 0; 00140 }
static int group_list_function_read | ( | struct ast_channel * | chan, | |
char * | cmd, | |||
char * | data, | |||
char * | buf, | |||
size_t | len | |||
) | [static] |
Definition at line 151 of file func_groupcount.c.
References ast_app_group_list_head(), ast_app_group_list_lock(), ast_app_group_list_unlock(), AST_LIST_NEXT, ast_strlen_zero(), ast_group_info::category, ast_group_info::chan, and ast_group_info::group.
00153 { 00154 struct ast_group_info *gi = NULL; 00155 char tmp1[1024] = ""; 00156 char tmp2[1024] = ""; 00157 00158 if (!chan) 00159 return -1; 00160 00161 ast_app_group_list_lock(); 00162 00163 gi = ast_app_group_list_head(); 00164 while (gi) { 00165 if (gi->chan != chan) 00166 continue; 00167 if (!ast_strlen_zero(tmp1)) { 00168 ast_copy_string(tmp2, tmp1, sizeof(tmp2)); 00169 if (!ast_strlen_zero(gi->category)) 00170 snprintf(tmp1, sizeof(tmp1), "%s %s@%s", tmp2, gi->group, gi->category); 00171 else 00172 snprintf(tmp1, sizeof(tmp1), "%s %s", tmp2, gi->group); 00173 } else { 00174 if (!ast_strlen_zero(gi->category)) 00175 snprintf(tmp1, sizeof(tmp1), "%s@%s", gi->group, gi->category); 00176 else 00177 snprintf(tmp1, sizeof(tmp1), "%s", gi->group); 00178 } 00179 gi = AST_LIST_NEXT(gi, list); 00180 } 00181 00182 ast_app_group_list_unlock(); 00183 00184 ast_copy_string(buf, tmp1, len); 00185 00186 return 0; 00187 }
static int group_match_count_function_read | ( | struct ast_channel * | chan, | |
char * | cmd, | |||
char * | data, | |||
char * | buf, | |||
size_t | len | |||
) | [static] |
Definition at line 67 of file func_groupcount.c.
References ast_app_group_match_get_count(), ast_app_group_split_group(), ast_strlen_zero(), and group.
00070 { 00071 int count; 00072 char group[80] = ""; 00073 char category[80] = ""; 00074 00075 ast_app_group_split_group(data, group, sizeof(group), category, 00076 sizeof(category)); 00077 00078 if (!ast_strlen_zero(group)) { 00079 count = ast_app_group_match_get_count(group, category); 00080 snprintf(buf, len, "%d", count); 00081 } 00082 00083 return 0; 00084 }
static int load_module | ( | void | ) | [static] |
Definition at line 210 of file func_groupcount.c.
References ast_custom_function_register(), group_count_function, group_function, group_list_function, and group_match_count_function.
00211 { 00212 int res = 0; 00213 00214 res |= ast_custom_function_register(&group_count_function); 00215 res |= ast_custom_function_register(&group_match_count_function); 00216 res |= ast_custom_function_register(&group_list_function); 00217 res |= ast_custom_function_register(&group_function); 00218 00219 return res; 00220 }
static int unload_module | ( | void | ) | [static] |
Definition at line 198 of file func_groupcount.c.
References ast_custom_function_unregister(), group_count_function, group_function, group_list_function, and group_match_count_function.
00199 { 00200 int res = 0; 00201 00202 res |= ast_custom_function_unregister(&group_count_function); 00203 res |= ast_custom_function_unregister(&group_match_count_function); 00204 res |= ast_custom_function_unregister(&group_list_function); 00205 res |= ast_custom_function_unregister(&group_function); 00206 00207 return res; 00208 }
struct ast_custom_function group_count_function [static] |
struct ast_custom_function group_function [static] |
struct ast_custom_function group_list_function [static] |
struct ast_custom_function group_match_count_function [static] |