]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
realtime: Centralize some common realtime backend code 45/5045/4
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:50:56 +0000 (11:50 -0500)
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 b9ca81f367ddc433adde22ad6175c7376c146ace..cdc641bd1706799933de4c9377813c432e3e7ac7 100644 (file)
@@ -525,9 +525,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++) {
@@ -936,8 +935,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 0b59f63b6d1ced4e688b46e07fcbb8556879465d..4dc473cd71b27635169b1516474171b0c2f4d7fd 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 a51802928b1e1e19f2e4a45c0425353fd587ba38..bc1a3fb3564628b07098e245ecdc3ccedfe0fd5a 100644 (file)
@@ -184,7 +184,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;
                }
 
@@ -571,8 +572,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 fd21aab809e3115e58ad4fe11dd80cf171151e32..9b73493e9d396d69be92ce06aa828cad987b0b5a 100644 (file)
@@ -1045,10 +1045,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;
@@ -1197,7 +1195,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 893b9d897d1b88dad73af73ef1eda40682f342cc..583a84558a57ec098081d4548582f3ea4a264851 100644 (file)
@@ -409,9 +409,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++) {
@@ -1018,9 +1017,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 58c34d08273898a7452b32fb128f0d4a08aae1bd..824adbf341ddedc2a8bbd9a3cd4711610758f254 100644 (file)
@@ -683,8 +683,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) {
@@ -1164,9 +1166,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 b97ef7a86ae70290dc7361957e233c6499ba3f64..a5a831ea3054e32edfd1b93ef9a10052d3ea0fd8 100644 (file)
@@ -875,10 +875,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;
                }
 
@@ -1087,8 +1085,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 b9a10621506d1fd807762060eaaf8dbc744a176f..5362e9ede1a3d47a07a8a59500d881e83431d2d8 100644 (file)
@@ -505,7 +505,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;
        }
 
@@ -725,8 +726,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;
                }