From 61b63013e6074478d264d20c2db0edf17e57a0ff Mon Sep 17 00:00:00 2001 From: Andy Zhou Date: Tue, 17 Mar 2015 21:25:20 -0700 Subject: [PATCH] ovsdb-monitor: refactoring ovsdb_monitor_get_initial 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 Acked-by: Ben Pfaff --- ovsdb/jsonrpc-server.c | 9 +++++++-- ovsdb/monitor.c | 5 +---- ovsdb/monitor.h | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c index 55148971a..1d57600d1 100644 --- a/ovsdb/jsonrpc-server.c +++ b/ovsdb/jsonrpc-server.c @@ -89,6 +89,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. */ @@ -1228,8 +1231,10 @@ ovsdb_jsonrpc_monitor_create(struct ovsdb_jsonrpc_session *s, struct ovsdb *db, } } - return jsonrpc_create_reply(ovsdb_monitor_get_initial(m->dbmon), - request_id); + ovsdb_monitor_get_initial(m->dbmon); + json = ovsdb_jsonrpc_monitor_compose_table_update(m, true); + json = json ? json : json_object_create(); + return jsonrpc_create_reply(json, request_id); error: if (m) { diff --git a/ovsdb/monitor.c b/ovsdb/monitor.c index a1aeb5f51..95299cebb 100644 --- a/ovsdb/monitor.c +++ b/ovsdb/monitor.c @@ -505,12 +505,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) { @@ -524,8 +523,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/monitor.h b/ovsdb/monitor.h index 82c9a578b..aefe1d5d7 100644 --- a/ovsdb/monitor.h +++ b/ovsdb/monitor.h @@ -52,7 +52,7 @@ void ovsdb_monitor_table_add_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 -- 2.20.1