diff options
author | Ben Pfaff <blp@nicira.com> | 2010-06-09 15:18:17 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2010-06-23 12:43:02 -0700 |
commit | 4ea21243f5a6002528d33d2bd58ce41a9d03a4c4 (patch) | |
tree | e4edf7a5a300c36560fa02c3636e79675de22282 /tests | |
parent | 81857c785ea94f93fbf385f7db86f22103cfa29b (diff) |
ovsdb-idl: Simplify usage of ovsdb_idl_run().
It makes client code simpler if ovsdb_idl_run() simply lets the caller
know whether anything changed.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test-ovsdb.c | 44 |
1 files changed, 17 insertions, 27 deletions
diff --git a/tests/test-ovsdb.c b/tests/test-ovsdb.c index 21825d74..2c8470e1 100644 --- a/tests/test-ovsdb.c +++ b/tests/test-ovsdb.c @@ -1565,31 +1565,6 @@ print_idl(struct ovsdb_idl *idl, int step) } } -static unsigned int -print_updated_idl(struct ovsdb_idl *idl, struct jsonrpc *rpc, - int step, unsigned int seqno) -{ - for (;;) { - unsigned int new_seqno; - - if (rpc) { - jsonrpc_run(rpc); - } - ovsdb_idl_run(idl); - new_seqno = ovsdb_idl_get_seqno(idl); - if (new_seqno != seqno) { - print_idl(idl, step); - return new_seqno; - } - - if (rpc) { - jsonrpc_wait(rpc); - } - ovsdb_idl_wait(idl); - poll_block(); - } -} - static void parse_uuids(const struct json *json, struct ovsdb_symbol_table *symtab, size_t *n) @@ -1786,8 +1761,19 @@ do_idl(int argc, char *argv[]) /* The previous transaction didn't change anything. */ arg++; } else { - seqno = print_updated_idl(idl, rpc, step++, seqno); + /* Wait for update. */ + while (ovsdb_idl_get_seqno(idl) == seqno && !ovsdb_idl_run(idl)) { + jsonrpc_run(rpc); + + ovsdb_idl_wait(idl); + jsonrpc_wait(rpc); + poll_block(); + } + + /* Print update. */ + print_idl(idl, step++); } + seqno = ovsdb_idl_get_seqno(idl); if (!strcmp(arg, "reconnect")) { printf("%03d: reconnect\n", step++); @@ -1816,7 +1802,11 @@ do_idl(int argc, char *argv[]) if (rpc) { jsonrpc_close(rpc); } - print_updated_idl(idl, NULL, step++, seqno); + while (ovsdb_idl_get_seqno(idl) == seqno && !ovsdb_idl_run(idl)) { + ovsdb_idl_wait(idl); + poll_block(); + } + print_idl(idl, step++); ovsdb_idl_destroy(idl); printf("%03d: done\n", step); } |