[ovs-dev] [ovsdb speedup 04/18] ovsdb: refactor ovsdb_monitor_add_column()

Andy Zhou azhou at nicira.com
Thu Mar 19 07:08:20 UTC 2015


To hide ovsdb_monitor_table object from ovsdb_jsonrpc serve.

Signed-off-by: Andy Zhou <azhou at nicira.com>
---
 ovsdb/jsonrpc-server.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c
index 1241537..973cc46 100644
--- a/ovsdb/jsonrpc-server.c
+++ b/ovsdb/jsonrpc-server.c
@@ -1121,13 +1121,17 @@ ovsdb_jsonrpc_monitor_find(struct ovsdb_jsonrpc_session *s,
 }
 
 static void
-ovsdb_add_monitor_column(struct ovsdb_monitor_table *mt,
+ovsdb_monitor_add_column(struct ovsdb_monitor *dbmon,
+                         const struct ovsdb_table *table,
                          const struct ovsdb_column *column,
                          enum ovsdb_monitor_selection select,
                          size_t *allocated_columns)
 {
+    struct ovsdb_monitor_table *mt;
     struct ovsdb_monitor_column *c;
 
+    mt = shash_find_data(&dbmon->tables, table->schema->name);
+
     if (mt->n_columns >= *allocated_columns) {
         mt->columns = x2nrealloc(mt->columns, allocated_columns,
                                  sizeof *mt->columns);
@@ -1148,9 +1152,12 @@ compare_ovsdb_monitor_column(const void *a_, const void *b_)
 }
 
 static void
-ovsdb_monitor_set_select(struct ovsdb_monitor_table *mt,
+ovsdb_monitor_table_set_select(struct ovsdb_monitor *dbmon,
+                         const struct ovsdb_table *table,
                          enum ovsdb_monitor_selection select)
 {
+    struct ovsdb_monitor_table * mt;
+    mt = shash_find_data(&dbmon->tables, table->schema->name);
     mt->select = select;
 }
 
@@ -1165,7 +1172,6 @@ ovsdb_jsonrpc_parse_monitor_request(struct ovsdb_monitor *dbmon,
     const struct json *columns, *select_json;
     struct ovsdb_parser parser;
     struct ovsdb_error *error;
-    struct ovsdb_monitor_table *mt;
 
     ovsdb_parser_init(&parser, monitor_request, "table %s", ts->name);
     columns = ovsdb_parser_member(&parser, "columns", OP_ARRAY | OP_OPTIONAL);
@@ -1199,8 +1205,7 @@ ovsdb_jsonrpc_parse_monitor_request(struct ovsdb_monitor *dbmon,
         select = OJMS_INITIAL | OJMS_INSERT | OJMS_DELETE | OJMS_MODIFY;
     }
 
-    mt = shash_find_data(&dbmon->tables, table->schema->name);
-    ovsdb_monitor_set_select(mt, select);
+    ovsdb_monitor_table_set_select(dbmon, table, select);
     if (columns) {
         size_t i;
 
@@ -1219,12 +1224,13 @@ ovsdb_jsonrpc_parse_monitor_request(struct ovsdb_monitor *dbmon,
             }
 
             s = columns->u.array.elems[i]->u.string;
-            column = shash_find_data(&mt->table->schema->columns, s);
+            column = shash_find_data(&table->schema->columns, s);
             if (!column) {
                 return ovsdb_syntax_error(columns, NULL, "%s is not a valid "
                                           "column name", s);
             }
-            ovsdb_add_monitor_column(mt, column, select, allocated_columns);
+            ovsdb_monitor_add_column(dbmon, table, column, select,
+                                     allocated_columns);
         }
     } else {
         struct shash_node *node;
@@ -1232,7 +1238,7 @@ ovsdb_jsonrpc_parse_monitor_request(struct ovsdb_monitor *dbmon,
         SHASH_FOR_EACH (node, &ts->columns) {
             const struct ovsdb_column *column = node->data;
             if (column->index != OVSDB_COL_UUID) {
-                ovsdb_add_monitor_column(mt, column, select,
+                ovsdb_monitor_add_column(dbmon, table, column, select,
                                          allocated_columns);
             }
         }
-- 
1.9.1




More information about the dev mailing list