00001 /* 00002 * Asterisk -- An open source telephony toolkit. 00003 * 00004 * Copyright (C) 1999 - 2005, Digium, Inc. 00005 * 00006 * Mark Spencer <markster@digium.com> 00007 * 00008 * See http://www.asterisk.org for more information about 00009 * the Asterisk project. Please do not directly contact 00010 * any of the maintainers of this project for assistance; 00011 * the project provides a web site, mailing lists and IRC 00012 * channels for your use. 00013 * 00014 * This program is free software, distributed under the terms of 00015 * the GNU General Public License Version 2. See the LICENSE file 00016 * at the top of the source tree. 00017 */ 00018 00019 /*! \file 00020 * \brief Persistant data storage (akin to *doze registry) 00021 */ 00022 00023 #ifndef _ASTERISK_ASTDB_H 00024 #define _ASTERISK_ASTDB_H 00025 00026 #if defined(__cplusplus) || defined(c_plusplus) 00027 extern "C" { 00028 #endif 00029 00030 struct ast_db_entry { 00031 struct ast_db_entry *next; 00032 char *key; 00033 char data[0]; 00034 }; 00035 00036 /*!\brief Get key value specified by family/key */ 00037 int ast_db_get(const char *family, const char *key, char *out, int outlen); 00038 00039 /*!\brief Store value addressed by family/key*/ 00040 int ast_db_put(const char *family, const char *key, char *value); 00041 00042 /*!\brief Delete entry in astdb */ 00043 int ast_db_del(const char *family, const char *key); 00044 00045 /*!\brief Delete one or more entries in astdb 00046 * If both parameters are NULL, the entire database will be purged. If 00047 * only keytree is NULL, all entries within the family will be purged. 00048 * It is an error for keytree to have a value when family is NULL. 00049 * 00050 * \retval 0 Entries were deleted 00051 * \retval -1 An error occurred 00052 */ 00053 int ast_db_deltree(const char *family, const char *keytree); 00054 00055 /*!\brief Get a list of values within the astdb tree 00056 * If family is specified, only those keys will be returned. If keytree 00057 * is specified, subkeys are expected to exist (separated from the key with 00058 * a slash). If subkeys do not exist and keytree is specified, the tree will 00059 * consist of either a single entry or NULL will be returned. 00060 * 00061 * Resulting tree should be freed by passing the return value to ast_db_freetree() 00062 * when usage is concluded. 00063 */ 00064 struct ast_db_entry *ast_db_gettree(const char *family, const char *keytree); 00065 00066 /*!\brief Free structure created by ast_db_gettree() */ 00067 void ast_db_freetree(struct ast_db_entry *entry); 00068 00069 #if defined(__cplusplus) || defined(c_plusplus) 00070 } 00071 #endif 00072 00073 #endif /* _ASTERISK_ASTDB_H */