rconn: Add new functions for getting/setting basic rconn parameters.
authorBen Pfaff <blp@nicira.com>
Wed, 4 Mar 2009 17:56:34 +0000 (09:56 -0800)
committerBen Pfaff <blp@nicira.com>
Thu, 5 Mar 2009 00:55:53 +0000 (16:55 -0800)
lib/rconn.c
lib/rconn.h

index 78f86567bfe045284ce1fb5a5feb82ee9eab7497..a37f9fb8ee3c491ea236189ad2c7cf37f2ec3d6e 100644 (file)
@@ -211,13 +211,43 @@ rconn_create(int probe_interval, int max_backoff)
     rc->questionable_connectivity = false;
     rc->last_questioned = time_now();
 
-    rc->probe_interval = probe_interval ? MAX(5, probe_interval) : 0;
+    rconn_set_probe_interval(rc, probe_interval);
 
     rc->n_monitors = 0;
 
     return rc;
 }
 
+void
+rconn_set_max_backoff(struct rconn *rc, int max_backoff)
+{
+    rc->max_backoff = max_backoff ? max_backoff : 60;
+    if (rc->state == S_BACKOFF && rc->backoff > max_backoff) {
+        rc->backoff = max_backoff;
+        if (rc->backoff_deadline > time_now() + max_backoff) {
+            rc->backoff_deadline = time_now() + max_backoff;
+        }
+    }
+}
+
+int
+rconn_get_max_backoff(const struct rconn *rc)
+{
+    return rc->max_backoff;
+}
+
+void
+rconn_set_probe_interval(struct rconn *rc, int probe_interval)
+{
+    rc->probe_interval = probe_interval ? MAX(5, probe_interval) : 0;
+}
+
+int
+rconn_get_probe_interval(const struct rconn *rc)
+{
+    return rc->probe_interval;
+}
+
 int
 rconn_connect(struct rconn *rc, const char *name)
 {
index 587eafc1423156142784b05d2b94cbe3346c4ed2..f804b9a7e4df5cff9a55a47367dc0f4fac8fbe88 100644 (file)
@@ -58,6 +58,12 @@ struct rconn *rconn_new(const char *name,
                         int inactivity_probe_interval, int max_backoff);
 struct rconn *rconn_new_from_vconn(const char *name, struct vconn *);
 struct rconn *rconn_create(int inactivity_probe_interval, int max_backoff);
+
+void rconn_set_max_backoff(struct rconn *, int max_backoff);
+int rconn_get_max_backoff(const struct rconn *);
+void rconn_set_probe_interval(struct rconn *, int inactivity_probe_interval);
+int rconn_get_probe_interval(const struct rconn *);
+
 int rconn_connect(struct rconn *, const char *name);
 void rconn_connect_unreliably(struct rconn *,
                               const char *name, struct vconn *vconn);