[ovs-dev] [PATCH 17/19] ovsdb-monitor: refactor ovsdb_monitor_create()
Andy Zhou
azhou at nicira.com
Fri Apr 10 00:11:36 UTC 2015
Add ovsdb_monitor_add_jsonrpc_monitor(). This change will allow
ovsdb_monitor to be reference counted.
Signed-off-by: Andy Zhou <azhou at nicira.com>
Acked-by: Ben Pfaff <blp at nicira.com>
---
v1->v2: style fixes
---
ovsdb/jsonrpc-server.c | 2 ++
ovsdb/monitor.c | 17 ++++++++++++-----
ovsdb/monitor.h | 3 +++
3 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c
index c3a05c1..e5f7c3c 100644
--- a/ovsdb/jsonrpc-server.c
+++ b/ovsdb/jsonrpc-server.c
@@ -1234,6 +1234,8 @@ ovsdb_jsonrpc_monitor_create(struct ovsdb_jsonrpc_session *s, struct ovsdb *db,
}
}
+ ovsdb_monitor_add_jsonrpc_monitor(m->dbmon, m);
+
ovsdb_monitor_get_initial(m->dbmon);
json = ovsdb_jsonrpc_monitor_compose_update(m, true);
json = json ? json : json_object_create();
diff --git a/ovsdb/monitor.c b/ovsdb/monitor.c
index 08c0a5a..53c2c8b 100644
--- a/ovsdb/monitor.c
+++ b/ovsdb/monitor.c
@@ -230,12 +230,22 @@ ovsdb_monitor_row_destroy(const struct ovsdb_monitor_table *mt,
}
}
+void
+ovsdb_monitor_add_jsonrpc_monitor(struct ovsdb_monitor *dbmon,
+ struct ovsdb_jsonrpc_monitor *jsonrpc_monitor)
+{
+ struct jsonrpc_monitor_node *jm;
+
+ jm = xzalloc(sizeof *jm);
+ jm->jsonrpc_monitor = jsonrpc_monitor;
+ list_push_back(&dbmon->jsonrpc_monitors, &jm->node);
+}
+
struct ovsdb_monitor *
ovsdb_monitor_create(struct ovsdb *db,
struct ovsdb_jsonrpc_monitor *jsonrpc_monitor)
{
struct ovsdb_monitor *dbmon;
- struct jsonrpc_monitor_node *jm;
dbmon = xzalloc(sizeof *dbmon);
@@ -246,10 +256,7 @@ ovsdb_monitor_create(struct ovsdb *db,
dbmon->n_transactions = 0;
shash_init(&dbmon->tables);
- jm = xzalloc(sizeof *jm);
- jm->jsonrpc_monitor = jsonrpc_monitor;
- list_push_back(&dbmon->jsonrpc_monitors, &jm->node);
-
+ ovsdb_monitor_add_jsonrpc_monitor(dbmon, jsonrpc_monitor);
return dbmon;
}
diff --git a/ovsdb/monitor.h b/ovsdb/monitor.h
index ea2a7aa..2bc39a9 100644
--- a/ovsdb/monitor.h
+++ b/ovsdb/monitor.h
@@ -30,6 +30,9 @@ enum ovsdb_monitor_selection {
struct ovsdb_monitor *ovsdb_monitor_create(struct ovsdb *db,
struct ovsdb_jsonrpc_monitor *jsonrpc_monitor);
+void ovsdb_monitor_add_jsonrpc_monitor(struct ovsdb_monitor *dbmon,
+ struct ovsdb_jsonrpc_monitor *jsonrpc_monitor);
+
void ovsdb_monitor_remove_jsonrpc_monitor(struct ovsdb_monitor *dbmon,
struct ovsdb_jsonrpc_monitor *jsonrpc_monitor);
--
1.9.1
More information about the dev
mailing list