New function ovsdb_error_assert() for verifying that no error occurred.
authorBen Pfaff <blp@nicira.com>
Fri, 12 Mar 2010 18:27:33 +0000 (10:27 -0800)
committerBen Pfaff <blp@nicira.com>
Wed, 17 Mar 2010 21:24:55 +0000 (14:24 -0700)
lib/ovsdb-error.c
lib/ovsdb-error.h
lib/vlog-modules.def

index c0eddf280e9d0b907ada166f49f8e4e523e0a837..c9221493dd8fce1dbb0f47007b0190d97908bf55 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009 Nicira Networks
+/* Copyright (c) 2009, 2010 Nicira Networks
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 #include "dynamic-string.h"
 #include "json.h"
 #include "util.h"
+#include "vlog.h"
+
+#define THIS_MODULE VLM_ovsdb_error
+#include "vlog.h"
 
 struct ovsdb_error {
     const char *tag;            /* String for "error" member. */
@@ -219,3 +223,19 @@ ovsdb_error_get_tag(const struct ovsdb_error *error)
 {
     return error->tag;
 }
+
+/* If 'error' is nonnull, logs it as an error and frees it.  To be used in
+ * situations where an error should never occur, but an 'ovsdb_error *' gets
+ * passed back anyhow. */
+void
+ovsdb_error_assert(struct ovsdb_error *error)
+{
+    if (error) {
+        static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 1);
+        char *s = ovsdb_error_to_string(error);
+        VLOG_ERR_RL(&rl, "unexpected ovsdb error: %s", s);
+        free(s);
+        ovsdb_error_destroy(error);
+    }
+}
+
index 7e2523e3c96bf562dcebb2f2d00f9fbdb63597ab..2bff3ae563f66b440ef22dfd1ab6d4b3a95831f4 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009 Nicira Networks
+/* Copyright (c) 2009, 2010 Nicira Networks
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -50,4 +50,6 @@ struct json *ovsdb_error_to_json(const struct ovsdb_error *);
 
 const char *ovsdb_error_get_tag(const struct ovsdb_error *);
 
+void ovsdb_error_assert(struct ovsdb_error *);
+
 #endif /* ovsdb-error.h */
index f012e10c767eb66f76ba71aa598eae88f5b422c0..e3a0ebd23de15deabe0cbecf6230d18afdf98a6e 100644 (file)
@@ -51,6 +51,7 @@ VLOG_MODULE(ovs_discover)
 VLOG_MODULE(ofproto)
 VLOG_MODULE(openflowd)
 VLOG_MODULE(ovsdb_client)
+VLOG_MODULE(ovsdb_error)
 VLOG_MODULE(ovsdb_file)
 VLOG_MODULE(ovsdb_idl)
 VLOG_MODULE(ovsdb_log)