From 62e285f44af78c06140ac06ae35bd831b3c5984e Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Wed, 4 Mar 2009 09:56:34 -0800 Subject: [PATCH] rconn: Add new functions for getting/setting basic rconn parameters. --- lib/rconn.c | 32 +++++++++++++++++++++++++++++++- lib/rconn.h | 6 ++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/lib/rconn.c b/lib/rconn.c index 78f86567..a37f9fb8 100644 --- a/lib/rconn.c +++ b/lib/rconn.c @@ -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) { diff --git a/lib/rconn.h b/lib/rconn.h index 587eafc1..f804b9a7 100644 --- a/lib/rconn.h +++ b/lib/rconn.h @@ -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); -- 2.30.2