#include "asterisk.h"
#include "asterisk/module.h"
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/utils.h"
#include "asterisk/app.h"
Go to the source code of this file.
Functions | |
static void | __reg_module (void) |
static void | __unreg_module (void) |
static int | load_module (void) |
static int | timeout_read (struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len) |
static int | timeout_write (struct ast_channel *chan, const char *cmd, char *data, const char *value) |
static int | unload_module (void) |
Variables | |
static struct ast_module_info | __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Channel timeout dialplan functions" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "ac1f6a56484a8820659555499174e588" , .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, } |
static struct ast_module_info * | ast_module_info = &__mod_info |
static struct ast_custom_function | timeout_function |
Definition in file func_timeout.c.
static void __reg_module | ( | void | ) | [static] |
Definition at line 212 of file func_timeout.c.
static void __unreg_module | ( | void | ) | [static] |
Definition at line 212 of file func_timeout.c.
static int load_module | ( | void | ) | [static] |
Definition at line 207 of file func_timeout.c.
References ast_custom_function_register, and timeout_function.
00208 { 00209 return ast_custom_function_register(&timeout_function); 00210 }
static int timeout_read | ( | struct ast_channel * | chan, | |
const char * | cmd, | |||
char * | data, | |||
char * | buf, | |||
size_t | len | |||
) | [static] |
Definition at line 77 of file func_timeout.c.
References ast_copy_string(), ast_log(), ast_tvdiff_ms(), ast_tvnow(), ast_tvzero(), ast_pbx::dtimeoutms, LOG_ERROR, ast_channel::pbx, ast_pbx::rtimeoutms, and ast_channel::whentohangup.
00079 { 00080 struct timeval myt; 00081 00082 if (!chan) 00083 return -1; 00084 00085 if (!data) { 00086 ast_log(LOG_ERROR, "Must specify type of timeout to get.\n"); 00087 return -1; 00088 } 00089 00090 switch (*data) { 00091 case 'a': 00092 case 'A': 00093 if (ast_tvzero(chan->whentohangup)) { 00094 ast_copy_string(buf, "0", len); 00095 } else { 00096 myt = ast_tvnow(); 00097 snprintf(buf, len, "%.3f", ast_tvdiff_ms(chan->whentohangup, myt) / 1000.0); 00098 } 00099 break; 00100 00101 case 'r': 00102 case 'R': 00103 if (chan->pbx) { 00104 snprintf(buf, len, "%.3f", chan->pbx->rtimeoutms / 1000.0); 00105 } 00106 break; 00107 00108 case 'd': 00109 case 'D': 00110 if (chan->pbx) { 00111 snprintf(buf, len, "%.3f", chan->pbx->dtimeoutms / 1000.0); 00112 } 00113 break; 00114 00115 default: 00116 ast_log(LOG_ERROR, "Unknown timeout type specified.\n"); 00117 return -1; 00118 } 00119 00120 return 0; 00121 }
static int timeout_write | ( | struct ast_channel * | chan, | |
const char * | cmd, | |||
char * | data, | |||
const char * | value | |||
) | [static] |
Definition at line 123 of file func_timeout.c.
References ast_channel_setwhentohangup_tv(), ast_localtime(), ast_log(), ast_strftime(), ast_tvadd(), ast_tvnow(), ast_tvzero(), ast_verb, ast_verbose, LOG_ERROR, and VERBOSITY_ATLEAST.
00125 { 00126 double x = 0.0; 00127 long sec = 0L; 00128 char timestr[64]; 00129 struct ast_tm myt; 00130 struct timeval when = {0,}; 00131 int res; 00132 00133 if (!chan) 00134 return -1; 00135 00136 if (!data) { 00137 ast_log(LOG_ERROR, "Must specify type of timeout to set.\n"); 00138 return -1; 00139 } 00140 00141 if (!value) 00142 return -1; 00143 00144 res = sscanf(value, "%30ld%30lf", &sec, &x); 00145 if (res == 0 || sec < 0) { 00146 when.tv_sec = 0; 00147 when.tv_usec = 0; 00148 } else if (res == 1) { 00149 when.tv_sec = sec; 00150 } else if (res == 2) { 00151 when.tv_sec = sec; 00152 when.tv_usec = x * 1000000; 00153 } 00154 00155 switch (*data) { 00156 case 'a': 00157 case 'A': 00158 ast_channel_setwhentohangup_tv(chan, when); 00159 if (VERBOSITY_ATLEAST(3)) { 00160 if (!ast_tvzero(chan->whentohangup)) { 00161 when = ast_tvadd(when, ast_tvnow()); 00162 ast_strftime(timestr, sizeof(timestr), "%Y-%m-%d %H:%M:%S.%3q %Z", 00163 ast_localtime(&when, &myt, NULL)); 00164 ast_verbose("Channel will hangup at %s.\n", timestr); 00165 } else { 00166 ast_verbose("Channel hangup cancelled.\n"); 00167 } 00168 } 00169 break; 00170 00171 case 'r': 00172 case 'R': 00173 if (chan->pbx) { 00174 chan->pbx->rtimeoutms = when.tv_sec * 1000 + when.tv_usec / 1000; 00175 ast_verb(3, "Response timeout set to %.3f\n", chan->pbx->rtimeoutms / 1000.0); 00176 } 00177 break; 00178 00179 case 'd': 00180 case 'D': 00181 if (chan->pbx) { 00182 chan->pbx->dtimeoutms = when.tv_sec * 1000 + when.tv_usec / 1000; 00183 ast_verb(3, "Digit timeout set to %.3f\n", chan->pbx->dtimeoutms / 1000.0); 00184 } 00185 break; 00186 00187 default: 00188 ast_log(LOG_ERROR, "Unknown timeout type specified.\n"); 00189 break; 00190 } 00191 00192 return 0; 00193 }
static int unload_module | ( | void | ) | [static] |
Definition at line 202 of file func_timeout.c.
References ast_custom_function_unregister(), and timeout_function.
00203 { 00204 return ast_custom_function_unregister(&timeout_function); 00205 }
struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Channel timeout dialplan functions" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "ac1f6a56484a8820659555499174e588" , .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, } [static] |
Definition at line 212 of file func_timeout.c.
struct ast_module_info* ast_module_info = &__mod_info [static] |
Definition at line 212 of file func_timeout.c.
struct ast_custom_function timeout_function [static] |