mirror of https://github.com/sipwise/asterisk.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.8 KiB
89 lines
2.8 KiB
--- include/asterisk/config.h (revision 112598)
|
|
+++ include/asterisk/config.h (working copy)
|
|
@@ -49,6 +49,8 @@
|
|
typedef struct ast_variable *realtime_var_get(const char *database, const char *table, va_list ap);
|
|
typedef struct ast_config *realtime_multi_get(const char *database, const char *table, va_list ap);
|
|
typedef int realtime_update(const char *database, const char *table, const char *keyfield, const char *entity, va_list ap);
|
|
+typedef int realtime_store(const char *database, const char *table, va_list ap);
|
|
+typedef int realtime_destroy(const char *database, const char *table, const char *keyfield, const char *entity, va_list ap);
|
|
|
|
struct ast_config_engine {
|
|
char *name;
|
|
@@ -56,6 +58,8 @@
|
|
realtime_var_get *realtime_func;
|
|
realtime_multi_get *realtime_multi_func;
|
|
realtime_update *update_func;
|
|
+ realtime_store *store_func;
|
|
+ realtime_destroy *destroy_func;
|
|
struct ast_config_engine *next;
|
|
};
|
|
|
|
@@ -156,6 +160,25 @@
|
|
*/
|
|
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
|
|
--- main/config.c (revision 112598)
|
|
+++ main/config.c (working copy)
|
|
@@ -1469,6 +1469,39 @@
|
|
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;
|