Mon Jul 14 17:25:18 2008

Asterisk developer's documentation


func_db.c File Reference

Functions for interaction with the Asterisk database. More...

#include "asterisk.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <regex.h>
#include "asterisk/module.h"
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/logger.h"
#include "asterisk/options.h"
#include "asterisk/utils.h"
#include "asterisk/app.h"
#include "asterisk/astdb.h"

Include dependency graph for func_db.c:

Go to the source code of this file.

Functions

 AST_MODULE_INFO_STANDARD (ASTERISK_GPL_KEY,"Database (astdb) related dialplan functions")
static int function_db_delete (struct ast_channel *chan, char *cmd, char *parse, char *buf, size_t len)
static int function_db_exists (struct ast_channel *chan, char *cmd, char *parse, char *buf, size_t len)
static int function_db_read (struct ast_channel *chan, char *cmd, char *parse, char *buf, size_t len)
static int function_db_write (struct ast_channel *chan, char *cmd, char *parse, const char *value)
static int load_module (void)
static int unload_module (void)

Variables

static struct ast_custom_function db_delete_function
static struct ast_custom_function db_exists_function
static struct ast_custom_function db_function


Detailed Description

Functions for interaction with the Asterisk database.

Author:
Russell Bryant <russelb@clemson.edu>

Definition in file func_db.c.


Function Documentation

AST_MODULE_INFO_STANDARD ( ASTERISK_GPL_KEY  ,
"Database (astdb) related dialplan functions"   
)

static int function_db_delete ( struct ast_channel chan,
char *  cmd,
char *  parse,
char *  buf,
size_t  len 
) [static]

Definition at line 162 of file func_db.c.

References AST_APP_ARG, ast_db_del(), ast_db_get(), AST_DECLARE_APP_ARGS, ast_log(), AST_NONSTANDARD_APP_ARGS, ast_strlen_zero(), LOG_DEBUG, LOG_WARNING, and pbx_builtin_setvar_helper().

00164 {
00165    AST_DECLARE_APP_ARGS(args,
00166               AST_APP_ARG(family);
00167               AST_APP_ARG(key);
00168    );
00169 
00170    buf[0] = '\0';
00171 
00172    if (ast_strlen_zero(parse)) {
00173       ast_log(LOG_WARNING, "DB_DELETE requires an argument, DB_DELETE(<family>/<key>)\n");
00174       return -1;
00175    }
00176 
00177    AST_NONSTANDARD_APP_ARGS(args, parse, '/');
00178 
00179    if (args.argc < 2) {
00180       ast_log(LOG_WARNING, "DB_DELETE requires an argument, DB_DELETE(<family>/<key>)\n");
00181       return -1;
00182    }
00183 
00184    if (ast_db_get(args.family, args.key, buf, len - 1)) {
00185       ast_log(LOG_DEBUG, "DB_DELETE: %s/%s not found in database.\n", args.family, args.key);
00186    } else {
00187       if (ast_db_del(args.family, args.key)) {
00188          ast_log(LOG_DEBUG, "DB_DELETE: %s/%s could not be deleted from the database\n", 
00189             args.family, args.key);
00190       }
00191    }
00192    pbx_builtin_setvar_helper(chan, "DB_RESULT", buf);
00193 
00194    return 0;
00195 }

static int function_db_exists ( struct ast_channel chan,
char *  cmd,
char *  parse,
char *  buf,
size_t  len 
) [static]

Definition at line 118 of file func_db.c.

References AST_APP_ARG, ast_db_get(), AST_DECLARE_APP_ARGS, ast_log(), AST_NONSTANDARD_APP_ARGS, ast_strlen_zero(), LOG_WARNING, and pbx_builtin_setvar_helper().

00120 {
00121    AST_DECLARE_APP_ARGS(args,
00122               AST_APP_ARG(family);
00123               AST_APP_ARG(key);
00124    );
00125 
00126    buf[0] = '\0';
00127 
00128    if (ast_strlen_zero(parse)) {
00129       ast_log(LOG_WARNING, "DB_EXISTS requires an argument, DB(<family>/<key>)\n");
00130       return -1;
00131    }
00132 
00133    AST_NONSTANDARD_APP_ARGS(args, parse, '/');
00134 
00135    if (args.argc < 2) {
00136       ast_log(LOG_WARNING, "DB_EXISTS requires an argument, DB(<family>/<key>)\n");
00137       return -1;
00138    }
00139 
00140    if (ast_db_get(args.family, args.key, buf, len - 1))
00141       strcpy(buf, "0");
00142    else {
00143       pbx_builtin_setvar_helper(chan, "DB_RESULT", buf);
00144       strcpy(buf, "1");
00145    }
00146 
00147    return 0;
00148 }

static int function_db_read ( struct ast_channel chan,
char *  cmd,
char *  parse,
char *  buf,
size_t  len 
) [static]

Definition at line 47 of file func_db.c.

References AST_APP_ARG, ast_db_get(), AST_DECLARE_APP_ARGS, ast_log(), AST_NONSTANDARD_APP_ARGS, ast_strlen_zero(), LOG_DEBUG, LOG_WARNING, and pbx_builtin_setvar_helper().

00049 {
00050    AST_DECLARE_APP_ARGS(args,
00051               AST_APP_ARG(family);
00052               AST_APP_ARG(key);
00053    );
00054 
00055    buf[0] = '\0';
00056 
00057    if (ast_strlen_zero(parse)) {
00058       ast_log(LOG_WARNING, "DB requires an argument, DB(<family>/<key>)\n");
00059       return -1;
00060    }
00061 
00062    AST_NONSTANDARD_APP_ARGS(args, parse, '/');
00063 
00064    if (args.argc < 2) {
00065       ast_log(LOG_WARNING, "DB requires an argument, DB(<family>/<key>)\n");
00066       return -1;
00067    }
00068 
00069    if (ast_db_get(args.family, args.key, buf, len - 1)) {
00070       ast_log(LOG_DEBUG, "DB: %s/%s not found in database.\n", args.family,
00071             args.key);
00072    } else
00073       pbx_builtin_setvar_helper(chan, "DB_RESULT", buf);
00074 
00075    return 0;
00076 }

static int function_db_write ( struct ast_channel chan,
char *  cmd,
char *  parse,
const char *  value 
) [static]

Definition at line 78 of file func_db.c.

References AST_APP_ARG, ast_db_put(), AST_DECLARE_APP_ARGS, ast_log(), AST_NONSTANDARD_APP_ARGS, ast_strlen_zero(), and LOG_WARNING.

00080 {
00081    AST_DECLARE_APP_ARGS(args,
00082               AST_APP_ARG(family);
00083               AST_APP_ARG(key);
00084    );
00085 
00086    if (ast_strlen_zero(parse)) {
00087       ast_log(LOG_WARNING, "DB requires an argument, DB(<family>/<key>)=<value>\n");
00088       return -1;
00089    }
00090 
00091    AST_NONSTANDARD_APP_ARGS(args, parse, '/');
00092 
00093    if (args.argc < 2) {
00094       ast_log(LOG_WARNING, "DB requires an argument, DB(<family>/<key>)=value\n");
00095       return -1;
00096    }
00097 
00098    if (ast_db_put(args.family, args.key, (char *) value))
00099       ast_log(LOG_WARNING, "DB: Error writing value to database.\n");
00100 
00101    return 0;
00102 }

static int load_module ( void   )  [static]

Definition at line 220 of file func_db.c.

References ast_custom_function_register(), db_delete_function, db_exists_function, and db_function.

00221 {
00222    int res = 0;
00223 
00224    res |= ast_custom_function_register(&db_function);
00225    res |= ast_custom_function_register(&db_exists_function);
00226    res |= ast_custom_function_register(&db_delete_function);
00227 
00228    return res;
00229 }

static int unload_module ( void   )  [static]

Definition at line 209 of file func_db.c.

References ast_custom_function_unregister(), db_delete_function, db_exists_function, and db_function.

00210 {
00211    int res = 0;
00212 
00213    res |= ast_custom_function_unregister(&db_function);
00214    res |= ast_custom_function_unregister(&db_exists_function);
00215    res |= ast_custom_function_unregister(&db_delete_function);
00216 
00217    return res;
00218 }


Variable Documentation

struct ast_custom_function db_delete_function [static]

Definition at line 198 of file func_db.c.

Referenced by load_module(), and unload_module().

struct ast_custom_function db_exists_function [static]

Definition at line 150 of file func_db.c.

Referenced by load_module(), and unload_module().

struct ast_custom_function db_function [static]

Definition at line 104 of file func_db.c.

Referenced by load_module(), and unload_module().


Generated on Mon Jul 14 17:25:18 2008 for Asterisk - the Open Source PBX by  doxygen 1.5.1