]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
realtime: Centralize some common realtime backend code 47/5047/3
authorSean Bright <sean.bright@gmail.com>
Tue, 21 Feb 2017 14:56:54 +0000 (09:56 -0500)
committerSean Bright <sean.bright@gmail.com>
Tue, 21 Feb 2017 16:53:17 +0000 (10:53 -0600)
All of the realtime backends create artificial ast_categorys to pass
back into the core as query results. These categories have no filename
or line number information associated with them and the backends differ
slightly on how they create them. So create a couple helper macros to
help make things more consistent.

Also updated the call sites to remove redundant error messages about
memory allocation failure.

Note that res_config_ldap sets the category filename to the 'table name'
but that is not read by anything in the core, so I've dropped it.

Change-Id: I3a1fd91e0c807dea1ce3b643b0a6fe5be9002897

addons/res_config_mysql.c
include/asterisk/config.h
res/res_config_curl.c
res/res_config_ldap.c
res/res_config_odbc.c
res/res_config_pgsql.c
res/res_config_sqlite.c
res/res_config_sqlite3.c

index f2ef949fc0cc07f89be0f637cb8f62844da1d36d..b080d118b8612a8030c28587b5019a1939d45f04 100644 (file)
@@ -523,9 +523,8 @@ static struct ast_config *realtime_multi_mysql(const char *database, const char
 
                while ((row = mysql_fetch_row(result))) {
                        var = NULL;
-                       cat = ast_category_new("", "", -1);
+                       cat = ast_category_new_anonymous();
                        if (!cat) {
-                               ast_log(LOG_WARNING, "Out of memory!\n");
                                continue;
                        }
                        for (i = 0; i < numFields; i++) {
@@ -934,8 +933,8 @@ static struct ast_config *config_mysql(const char *database, const char *table,
                        }
 
                        if (strcmp(last, row[0]) || last_cat_metric != atoi(row[3])) {
-                               if (!(cur_cat = ast_category_new(row[0], "", -1))) {
-                                       ast_log(LOG_WARNING, "Out of memory!\n");
+                               cur_cat = ast_category_new_dynamic(row[0]);
+                               if (!cur_cat) {
                                        break;
                                }
                                strcpy(last, row[0]);
index 4944a3af2022bff802fec9fe7b432cdf3275b84e..f57966b0babe7e9c26b212810b94e82f1f9779f7 100644 (file)
@@ -833,6 +833,18 @@ const char *ast_config_option(struct ast_config *cfg, const char *cat, const cha
  */
 struct ast_category *ast_category_new(const char *name, const char *in_file, int lineno);
 
+/*!
+ * \brief Create a category that is not backed by a file
+ *
+ * \param name name of new category
+ */
+#define ast_category_new_dynamic(name) ast_category_new(name, "", -1)
+
+/*!
+ * \brief Create a nameless category that is not backed by a file
+ */
+#define ast_category_new_anonymous() ast_category_new_dynamic("")
+
 /*!
  * \brief Create a category making it a template
  *
index 9ad7a6e3db7bddec8218cbd097f3adbabcfb2f64..06a6aef89e94fae852464188f71f70c2c12c5f77 100644 (file)
@@ -182,7 +182,8 @@ static struct ast_config *realtime_multi_curl(const char *url, const char *unuse
                        continue;
                }
 
-               if (!(cat = ast_category_new("", "", 99999))) {
+               cat = ast_category_new_anonymous();
+               if (!cat) {
                        continue;
                }
 
@@ -569,8 +570,10 @@ static struct ast_config *config_curl(const char *url, const char *unused, const
                }
 
                if (!cat || strcmp(category, cur_cat) || last_cat_metric != cat_metric) {
-                       if (!(cat = ast_category_new(category, "", 99999)))
+                       cat = ast_category_new_dynamic(category);
+                       if (!cat) {
                                break;
+                       }
                        cur_cat = category;
                        last_cat_metric = cat_metric;
                        ast_category_append(cfg, cat);
index 5e95853d462def6eef468ed05c77b857e16dc960..7bbac0ce0f31d3e969528b5c4f0286773032b587 100644 (file)
@@ -1043,10 +1043,8 @@ static struct ast_config *realtime_multi_ldap(const char *basedn,
                        struct ast_variable **p = vars;
 
                        while (*p) {
-                               struct ast_category *cat = NULL;
-                               cat = ast_category_new("", table_name, -1);
+                               struct ast_category *cat = ast_category_new_anonymous();
                                if (!cat) {
-                                       ast_log(LOG_ERROR, "Unable to create a new category!\n");
                                        break;
                                } else {
                                        struct ast_variable *var = *p;
@@ -1195,7 +1193,7 @@ static struct ast_config *config_ldap(const char *basedn, const char *table_name
                if (!last_category || strcmp(last_category, categories[i].name) ||
                        last_category_metric != categories[i].metric) {
 
-                       cur_cat = ast_category_new(categories[i].name, table_name, -1);
+                       cur_cat = ast_category_new_dynamic(categories[i].name);
                        if (!cur_cat) {
                                break;
                        }
index 5a25b6b5a0bf34c036fa0fe9d205c8cb584b493f..114708325eef16f12e0a8a2a0020596a94542768 100644 (file)
@@ -407,9 +407,8 @@ static struct ast_config *realtime_multi_odbc(const char *database, const char *
                        ast_log(LOG_WARNING, "SQL Fetch error! [%s]\n", ast_str_buffer(sql));
                        continue;
                }
-               cat = ast_category_new("","",99999);
+               cat = ast_category_new_anonymous();
                if (!cat) {
-                       ast_log(LOG_WARNING, "Out of memory!\n");
                        continue;
                }
                for (x=0;x<colcount;x++) {
@@ -1016,9 +1015,8 @@ static struct ast_config *config_odbc(const char *database, const char *table, c
                        continue;
                } 
                if (strcmp(last, q.category) || last_cat_metric != q.cat_metric) {
-                       cur_cat = ast_category_new(q.category, "", 99999);
+                       cur_cat = ast_category_new_dynamic(q.category);
                        if (!cur_cat) {
-                               ast_log(LOG_WARNING, "Out of memory!\n");
                                break;
                        }
                        strcpy(last, q.category);
index f0859617dea216c1b578c1f5d75f887fea36198a..b5f24b0f4da3ccbec16be764356a88359b0fa465 100644 (file)
@@ -648,8 +648,10 @@ static struct ast_config *realtime_multi_pgsql(const char *database, const char
 
                for (rowIndex = 0; rowIndex < num_rows; rowIndex++) {
                        var = NULL;
-                       if (!(cat = ast_category_new("","",99999)))
+                       cat = ast_category_new_anonymous();
+                       if (!cat) {
                                continue;
+                       }
                        for (i = 0; i < numFields; i++) {
                                stringp = PQgetvalue(result, rowIndex, i);
                                while (stringp) {
@@ -1129,9 +1131,10 @@ static struct ast_config *config_pgsql(const char *database, const char *table,
                        }
 
                        if (strcmp(last, field_category) || last_cat_metric != atoi(field_cat_metric)) {
-                               cur_cat = ast_category_new(field_category, "", 99999);
-                               if (!cur_cat)
+                               cur_cat = ast_category_new_dynamic(field_category);
+                               if (!cur_cat) {
                                        break;
+                               }
                                ast_copy_string(last, field_category, sizeof(last));
                                last_cat_metric = atoi(field_cat_metric);
                                ast_category_append(cfg, cur_cat);
index 68594978736be45c13c9af46e1c706d8061ea5b7..96a10b43f952cc554e9c7ecdb9cfa60c41b07384 100644 (file)
@@ -874,10 +874,8 @@ static int add_cfg_entry(void *arg, int argc, char **argv, char **columnNames)
        }
 
        if (!args->cat_name || strcmp(args->cat_name, argv[RES_CONFIG_SQLITE_CONFIG_CATEGORY])) {
-               args->cat = ast_category_new(argv[RES_CONFIG_SQLITE_CONFIG_CATEGORY], "", 99999);
-
+               args->cat = ast_category_new_dynamic(argv[RES_CONFIG_SQLITE_CONFIG_CATEGORY]);
                if (!args->cat) {
-                       ast_log(LOG_WARNING, "Unable to allocate category\n");
                        return 1;
                }
 
@@ -1086,8 +1084,8 @@ static int add_rt_multi_cfg_entry(void *arg, int argc, char **argv, char **colum
                return 1;
        }
 
-       if (!(cat = ast_category_new(cat_name, "", 99999))) {
-               ast_log(LOG_WARNING, "Unable to allocate category\n");
+       cat = ast_category_new_dynamic(cat_name);
+       if (!cat) {
                return 1;
        }
 
index 8c514b07ca157b777b7d431ed7a6d47bbe527738..087843a68057efe297584416859b1e7827ab6fed 100644 (file)
@@ -503,7 +503,8 @@ static int append_row_to_cfg(void *arg, int num_columns, char **values, char **c
        struct ast_category *cat;
        int i;
 
-       if (!(cat = ast_category_new("", "", 99999))) {
+       cat = ast_category_new_anonymous();
+       if (!cat) {
                return SQLITE_ABORT;
        }
 
@@ -723,8 +724,8 @@ static int static_realtime_cb(void *arg, int num_columns, char **values, char **
        }
 
        if (!args->cat_name || strcmp(args->cat_name, values[COL_CATEGORY])) {
-               if (!(args->cat = ast_category_new(values[COL_CATEGORY], "", 99999))) {
-                       ast_log(LOG_WARNING, "Unable to allocate category\n");
+               args->cat = ast_category_new_dynamic(values[COL_CATEGORY]);
+               if (!args->cat) {
                        return SQLITE_ABORT;
                }