[ovs-dev] [ovsdb speedup 10/18] ovsdb: refactoring ovsdb_monitor_get_initial
Andy Zhou
azhou at nicira.com
Thu Mar 19 07:08:27 UTC 2015
Refactoring ovsdb_monitor_get_initial() to not generate JSON object.
It only collect changes within the ovsdb_monitor().
ovsdb_jsonrpc_monitor_compose_table_update() is then used to generate
JSON object.
This change will also make future patch easier.
Signed-off-by: Andy Zhou <azhou at nicira.com>
---
ovsdb/jsonrpc-server.c | 7 ++++++-
ovsdb/ovsdb-monitor.c | 5 +----
ovsdb/ovsdb-monitor.h | 2 +-
3 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c
index 8ddf6c7..2437d4b 100644
--- a/ovsdb/jsonrpc-server.c
+++ b/ovsdb/jsonrpc-server.c
@@ -88,6 +88,9 @@ static struct jsonrpc_msg *ovsdb_jsonrpc_monitor_cancel(
static void ovsdb_jsonrpc_monitor_remove_all(struct ovsdb_jsonrpc_session *);
static void ovsdb_jsonrpc_monitor_flush_all(struct ovsdb_jsonrpc_session *);
static bool ovsdb_jsonrpc_monitor_needs_flush(struct ovsdb_jsonrpc_session *);
+static struct json *ovsdb_jsonrpc_monitor_compose_table_update(
+ const struct ovsdb_jsonrpc_monitor *monitor, bool initial);
+
/* JSON-RPC database server. */
@@ -1227,7 +1230,9 @@ ovsdb_jsonrpc_monitor_create(struct ovsdb_jsonrpc_session *s, struct ovsdb *db,
}
}
- return ovsdb_monitor_get_initial(m->dbmon);
+ ovsdb_monitor_get_initial(m->dbmon);
+ json = ovsdb_jsonrpc_monitor_compose_table_update(m, true);
+ return json ? json : json_object_create();
error:
if (m) {
diff --git a/ovsdb/ovsdb-monitor.c b/ovsdb/ovsdb-monitor.c
index 8d141b4..01a9828 100644
--- a/ovsdb/ovsdb-monitor.c
+++ b/ovsdb/ovsdb-monitor.c
@@ -507,12 +507,11 @@ ovsdb_monitor_change_cb(const struct ovsdb_row *old,
return true;
}
-struct json *
+void
ovsdb_monitor_get_initial(const struct ovsdb_monitor *dbmon)
{
struct ovsdb_monitor_aux aux;
struct shash_node *node;
- struct json *json;
ovsdb_monitor_init_aux(&aux, dbmon);
SHASH_FOR_EACH (node, &dbmon->tables) {
@@ -526,8 +525,6 @@ ovsdb_monitor_get_initial(const struct ovsdb_monitor *dbmon)
}
}
}
- json = ovsdb_monitor_compose_table_update(dbmon, true);
- return json ? json : json_object_create();
}
void
diff --git a/ovsdb/ovsdb-monitor.h b/ovsdb/ovsdb-monitor.h
index 4841302..6b7f730 100644
--- a/ovsdb/ovsdb-monitor.h
+++ b/ovsdb/ovsdb-monitor.h
@@ -52,7 +52,7 @@ void ovsdb_monitor_table_set_select(struct ovsdb_monitor *dbmon,
bool ovsdb_monitor_needs_flush(struct ovsdb_monitor *dbmon);
-struct json *ovsdb_monitor_get_initial(const struct ovsdb_monitor *dbmon);
+void ovsdb_monitor_get_initial(const struct ovsdb_monitor *dbmon);
void ovsdb_monitor_destroy(struct ovsdb_monitor *dbmon);
#endif
--
1.9.1
More information about the dev
mailing list