From 69bb679e14fcde1c7f79b573d2fc2c00e2543eec Mon Sep 17 00:00:00 2001 From: Steve Murphy Date: Wed, 11 Apr 2007 13:41:17 +0000 Subject: [PATCH] via 8118, a RealTime upgrade to make RT a complete storage abstraction. The store/destroy mechanisms needed these missing peices. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@61374 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- include/asterisk/config.h | 17 +++++++++++++++++ main/config.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/include/asterisk/config.h b/include/asterisk/config.h index f7b14af1bd..4ebf7b63ba 100644 --- a/include/asterisk/config.h +++ b/include/asterisk/config.h @@ -156,6 +156,23 @@ struct ast_config *ast_load_realtime_multientry(const char *family, ...); */ int ast_update_realtime(const char *family, const char *keyfield, const char *lookup, ...); +/*! \brief Create realtime configuration + * \param family which family/config to be created + * This function is used to create a parameter in realtime configuration space. + * + */ +int ast_store_realtime(const char *family, ...); + +/*! \brief Destroy realtime configuration + * \param family which family/config to be destroyed + * \param keyfield which field to use as the key + * \param lookup which value to look for in the key field to match the entry. + * This function is used to destroy an entry in realtime configuration space. + * Additional params are used as keys. + * + */ +int ast_destroy_realtime(const char *family, const char *keyfield, const char *lookup, ...); + /*! \brief Check if realtime engine is configured for family * returns 1 if family is configured in realtime and engine exists * \param family which family/config to be checked diff --git a/main/config.c b/main/config.c index a3cf96c507..9bc97eac64 100644 --- a/main/config.c +++ b/main/config.c @@ -1426,6 +1426,38 @@ int ast_update_realtime(const char *family, const char *keyfield, const char *lo return res; } +int ast_store_realtime(const char *family, ...) { + struct ast_config_engine *eng; + int res = -1; + char db[256]=""; + char table[256]=""; + va_list ap; + + va_start(ap, family); + eng = find_engine(family, db, sizeof(db), table, sizeof(table)); + if (eng && eng->store_func) + res = eng->store_func(db, table, ap); + va_end(ap); + + return res; +} + +int ast_destroy_realtime(const char *family, const char *keyfield, const char *lookup, ...) { + struct ast_config_engine *eng; + int res = -1; + char db[256]=""; + char table[256]=""; + va_list ap; + + va_start(ap, lookup); + eng = find_engine(family, db, sizeof(db), table, sizeof(table)); + if (eng && eng->destroy_func) + res = eng->destroy_func(db, table, keyfield, lookup, ap); + va_end(ap); + + return res; +} + static int config_command(int fd, int argc, char **argv) { struct ast_config_engine *eng; -- 2.47.2