On Wed, Oct 21, 2015 at 09:45:27PM -0700, Andy Zhou wrote:
> Add functions that can generate "update2" notification for a
> "monitor2" session. "monitor2" and "update2" are RFC 7047 extensions
> deescribed by ovsdb-server(1) manpage. See the manpage changes
> for more details.
> 
> Signed-off-by: Andy Zhou <az...@nicira.com>

Thanks for implementing this!

I think that there is only a one-character difference between
ovsdb_monitor_compose_update() and ovsdb_monitor_compose_update2(): the
first calls ovsdb_monitor_compose_row_update(), the latter calls
ovsdb_monitor_compose_row_update2().  If so, and if they won't diverge a
lot in later patches, then I'd suggest finding a way to avoid so much
code duplication.  You could, for example, use a conditional test inside
the function, or a function pointer.

There's a fair amount of code duplication from
ovsdb_monitor_compose_row_update() and
ovsdb_monitor_compose_row_update2(), also.  Is there a way to cleanly
reduce that?

Manpage
-------

I have some suggestions for the manpage.  I'm appending an incremental
diff.

Thanks,

Ben.

diff --git a/ovsdb/ovsdb-server.1.in b/ovsdb/ovsdb-server.1.in
index 1d68fd6..6c85729 100644
--- a/ovsdb/ovsdb-server.1.in
+++ b/ovsdb/ovsdb-server.1.in
@@ -248,84 +248,87 @@ monitors with the same identifier.
 .IP "4.1.12. Monitor2"
 A new monitor method added in Open vSwitch version 2.5. Monitor2 allows
 for more efficient update notifications (described below).
-
-Monitor method described in Section 4.1.5 also applies to monitor2, with
-the following exceptions.
-
+.IP
+The monitor method described in Section 4.1.5 also applies to
+monitor2, with the following exceptions.
+.
 .RS
 .IP \(bu
-RPC request method becomes "montior2"
+RPC request method becomes "monitor2".
 .IP \(bu
 Replay result follows <table-updates2>, described in Section 4.1.13.
 .IP \(bu
 Subsequent changes are sent to the client using the "update2" monitor
 notification, described in Section 4.1.13
 .RE
-
+.
+.IP
 Both monitor and monitor2 sessions can exist concurrently. However,
-monitor and monitor2 shares the smae <json-value> parameter space; it
-must be unique among all monitor and monitor2 seesion.
-
+monitor and monitor2 shares the same <json-value> parameter space; it
+must be unique among all monitor and monitor2 sessions.
+.
 .IP "4.1.13. Update2 notification"
 The "update2" notification is sent by the server to the client to report
 changes in tables that are being monitored following a "monitor2" request
-as described above. The notifaction has the following members:
-
+as described above. The notification has the following members:
+.
 .RS
 .nf
 "method": "update2"
 "params": [<json-value>, <table-updates2>]
-"id": NULL
+"id": null
 .fi
 .RE
-
+.
 .IP
 The <json-value> in "params" is the same as the value passed as the
 <json-value>  in "params" for the corresponding "monitor" request.
 <table-updates2> is an object that maps from a table name to a <table-update2>.
-A <table-update2> is an object htat maps from row's UUID to a <row-update2> 
object. A <row-update2> is an object with one of the following members:
-
+A <table-update2> is an object that maps from row's UUID to a <row-update2> 
object. A <row-update2> is an object with one of the following members:
+.
 .RS
-.nf
-"initial": <row>   present for "initial' updates
-"insert":  <row>   present for "insert' updates
-"delete":  <row>   present for "delete' updates
-"modify":  <row>   present for "modify' updates
-.fi
+.IP "\(dqinitial\(dq: <row>"
+present for "initial" updates
+.IP "\(dqinsert\(dq: <row>"
+present for "insert" updates
+.IP "\(dqdelete\(dq: <row>"
+present for "delete" updates
+.IP "\(dqmodify\(dq: <row>"
+present for "modify" updates
 .RE
-
+.
 .IP
 The format of <row> is described in Section 5.1.
-
+.
 .IP
-<row> is always a NULL object with a "delete" object. In "initial" and
-"insert" objects, <row> omits columns whose values equal to default
+<row> is always a null object for a "delete" update. In "initial" and
+"insert" updates, <row> omits columns whose values equal the default
 value of the column type.
-
+.
 .IP
-In "modify" object, <row> contains only the columns that are modified.
+For a "modify" update, <row> contains only the columns that are modified.
 <row> stores the difference between the old and new value for those columns,
 as described below.
-
+.
 .IP
 For columns with single value, the difference is the value of the new
 column.
-
+.
 .IP
 The difference between two sets are all elements that only belong
 to one of the sets.
-
+.
 .IP
-The difference between two maps are all key value pairs whose keys appears
-in only one of the maps. And elements with overlapping
-keys between the two maps, but are associated with different values.
-For those elements, <row> stores the key value pair from the new column.
-
+The difference between two maps are all key-value pairs whose keys
+appears in only one of the maps, plus the key-value pairs whose keys
+appear in both maps but with different values.  For the latter
+elements, <row> includes the value from the new column.
+.
 .IP
-Note that initial views of rows are not presented in update2 notifications,
+Initial views of rows are not presented in update2 notifications,
 but in the response object to the monitor2 request. The formatting of the
 <table-updates2> object, however, is the same in either case.
-
+.
 .IP "5.1. Notation"
 For <condition>, RFC 7047 only allows the use of \fB!=\fR, \fB==\fR,
 \fBincludes\fR, and \fBexcludes\fR operators with set types.  Open
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to