[ONOS-7117] Support configuring LeaderElector primitive session timeouts for faster leader elections
Change-Id: I81aa71cbb08ee31c145addbf00a6446ff4a5f9ed
diff --git a/core/api/src/main/java/org/onosproject/store/service/LeaderElectorBuilder.java b/core/api/src/main/java/org/onosproject/store/service/LeaderElectorBuilder.java
index d395cc5..d3d6951 100644
--- a/core/api/src/main/java/org/onosproject/store/service/LeaderElectorBuilder.java
+++ b/core/api/src/main/java/org/onosproject/store/service/LeaderElectorBuilder.java
@@ -15,6 +15,8 @@
*/
package org.onosproject.store.service;
+import java.util.concurrent.TimeUnit;
+
import org.onosproject.store.primitives.DistributedPrimitiveBuilder;
/**
@@ -22,7 +24,41 @@
*/
public abstract class LeaderElectorBuilder
extends DistributedPrimitiveBuilder<LeaderElectorBuilder, AsyncLeaderElector> {
+
+ private long electionTimeoutMillis = DistributedPrimitive.DEFAULT_OPERATION_TIMEOUT_MILLIS;
+
public LeaderElectorBuilder() {
super(DistributedPrimitive.Type.LEADER_ELECTOR);
}
+
+ /**
+ * Sets the election timeout in milliseconds.
+ *
+ * @param electionTimeoutMillis the election timeout in milliseconds
+ * @return leader elector builder
+ */
+ public LeaderElectorBuilder withElectionTimeout(long electionTimeoutMillis) {
+ this.electionTimeoutMillis = electionTimeoutMillis;
+ return this;
+ }
+
+ /**
+ * Sets the election timeout.
+ *
+ * @param electionTimeout the election timeout
+ * @param timeUnit the timeout time unit
+ * @return leader elector builder
+ */
+ public LeaderElectorBuilder withElectionTimeout(long electionTimeout, TimeUnit timeUnit) {
+ return withElectionTimeout(timeUnit.toMillis(electionTimeout));
+ }
+
+ /**
+ * Returns the election timeout in milliseconds.
+ *
+ * @return the election timeout in milliseconds
+ */
+ public final long electionTimeoutMillis() {
+ return electionTimeoutMillis;
+ }
}