Implement stress option framework.
[sliver-openvswitch.git] / lib / jsonrpc.c
index d06cdcd..a83dde9 100644 (file)
@@ -32,9 +32,9 @@
 #include "reconnect.h"
 #include "stream.h"
 #include "timeval.h"
-
-#define THIS_MODULE VLM_jsonrpc
 #include "vlog.h"
+
+VLOG_DEFINE_THIS_MODULE(jsonrpc);
 \f
 struct jsonrpc {
     struct stream *stream;
@@ -700,7 +700,10 @@ jsonrpc_session_open(const char *name)
 }
 
 /* Creates and returns a jsonrpc_session that is initially connected to
- * 'jsonrpc'.  If the connection is dropped, it will not be reconnected. */
+ * 'jsonrpc'.  If the connection is dropped, it will not be reconnected.
+ *
+ * On the assumption that such connections are likely to be short-lived
+ * (e.g. from ovs-vsctl), informational logging for them is suppressed. */
 struct jsonrpc_session *
 jsonrpc_session_open_unreliably(struct jsonrpc *jsonrpc)
 {
@@ -708,6 +711,7 @@ jsonrpc_session_open_unreliably(struct jsonrpc *jsonrpc)
 
     s = xmalloc(sizeof *s);
     s->reconnect = reconnect_create(time_msec());
+    reconnect_set_quiet(s->reconnect, true);
     reconnect_set_name(s->reconnect, jsonrpc_get_name(jsonrpc));
     reconnect_set_max_tries(s->reconnect, 0);
     reconnect_connected(s->reconnect, time_msec());
@@ -899,8 +903,8 @@ jsonrpc_session_recv(struct jsonrpc_session *s)
                 reply = jsonrpc_create_reply(json_clone(msg->params), msg->id);
                 jsonrpc_session_send(s, reply);
             } else if (msg->type == JSONRPC_REPLY
-                && msg->id && msg->id->type == JSON_STRING
-                && !strcmp(msg->id->u.string, "echo")) {
+                       && msg->id && msg->id->type == JSON_STRING
+                       && !strcmp(msg->id->u.string, "echo")) {
                 /* It's a reply to our echo request.  Suppress it. */
             } else {
                 return msg;
@@ -942,3 +946,16 @@ jsonrpc_session_force_reconnect(struct jsonrpc_session *s)
 {
     reconnect_force_reconnect(s->reconnect, time_msec());
 }
+
+void
+jsonrpc_session_set_max_backoff(struct jsonrpc_session *s, int max_backoff)
+{
+    reconnect_set_backoff(s->reconnect, 0, max_backoff);
+}
+
+void
+jsonrpc_session_set_probe_interval(struct jsonrpc_session *s,
+                                   int probe_interval)
+{
+    reconnect_set_probe_interval(s->reconnect, probe_interval);
+}