[asterisk-commits] realtime: Centralize some common realtime backend code (asterisk[14])

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Feb 21 12:49:33 CST 2017


Anonymous Coward #1000019 has submitted this change and it was merged. ( https://gerrit.asterisk.org/5046 )

Change subject: realtime: Centralize some common realtime backend code
......................................................................


realtime: Centralize some common realtime backend code

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
---
M addons/res_config_mysql.c
M include/asterisk/config.h
M res/res_config_curl.c
M res/res_config_ldap.c
M res/res_config_odbc.c
M res/res_config_pgsql.c
M res/res_config_sqlite.c
M res/res_config_sqlite3.c
8 files changed, 37 insertions(+), 25 deletions(-)

Approvals:
  Richard Mudgett: Looks good to me, but someone else must approve
  Anonymous Coward #1000019: Verified
  Joshua Colp: Looks good to me, approved



diff --git a/addons/res_config_mysql.c b/addons/res_config_mysql.c
index cd72b6c..259650d 100644
--- a/addons/res_config_mysql.c
+++ b/addons/res_config_mysql.c
@@ -525,9 +525,8 @@
 
 		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 @@
 			}
 
 			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]);
diff --git a/include/asterisk/config.h b/include/asterisk/config.h
index 4944a3a..f57966b 100644
--- a/include/asterisk/config.h
+++ b/include/asterisk/config.h
@@ -834,6 +834,18 @@
 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
  *
  * \param name name of new template
diff --git a/res/res_config_curl.c b/res/res_config_curl.c
index 7b571d5..90137e5 100644
--- a/res/res_config_curl.c
+++ b/res/res_config_curl.c
@@ -184,7 +184,8 @@
 			continue;
 		}
 
-		if (!(cat = ast_category_new("", "", 99999))) {
+		cat = ast_category_new_anonymous();
+		if (!cat) {
 			continue;
 		}
 
@@ -571,8 +572,10 @@
 		}
 
 		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);
diff --git a/res/res_config_ldap.c b/res/res_config_ldap.c
index 8454273..99e7736 100644
--- a/res/res_config_ldap.c
+++ b/res/res_config_ldap.c
@@ -1045,10 +1045,8 @@
 			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 @@
 		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;
 			}
diff --git a/res/res_config_odbc.c b/res/res_config_odbc.c
index 161dc53..7e2cfcb 100644
--- a/res/res_config_odbc.c
+++ b/res/res_config_odbc.c
@@ -409,9 +409,8 @@
 			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 @@
 			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);
diff --git a/res/res_config_pgsql.c b/res/res_config_pgsql.c
index d585c66..325dca8 100644
--- a/res/res_config_pgsql.c
+++ b/res/res_config_pgsql.c
@@ -650,8 +650,10 @@
 
 		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) {
@@ -1131,9 +1133,10 @@
 			}
 
 			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);
diff --git a/res/res_config_sqlite.c b/res/res_config_sqlite.c
index 4375c39..d116947 100644
--- a/res/res_config_sqlite.c
+++ b/res/res_config_sqlite.c
@@ -875,10 +875,8 @@
 	}
 
 	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 @@
 		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;
 	}
 
diff --git a/res/res_config_sqlite3.c b/res/res_config_sqlite3.c
index cb1a290..0d553b8 100644
--- a/res/res_config_sqlite3.c
+++ b/res/res_config_sqlite3.c
@@ -505,7 +505,8 @@
 	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 @@
 	}
 
 	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;
 		}
 

-- 
To view, visit https://gerrit.asterisk.org/5046
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I3a1fd91e0c807dea1ce3b643b0a6fe5be9002897
Gerrit-PatchSet: 3
Gerrit-Project: asterisk
Gerrit-Branch: 14
Gerrit-Owner: Sean Bright <sean.bright at gmail.com>
Gerrit-Reviewer: Anonymous Coward #1000019
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Mark Michelson <mmichelson at digium.com>
Gerrit-Reviewer: Richard Mudgett <rmudgett at digium.com>



More information about the asterisk-commits mailing list