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 <az...@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 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev