base for mastership term implementation
Change-Id: Ie354096ad8835536839e3c1504e19a2cbff866c1
diff --git a/core/api/src/main/java/org/onlab/onos/cluster/MastershipTerm.java b/core/api/src/main/java/org/onlab/onos/cluster/MastershipTerm.java
index 5c3c424..f11dafd 100644
--- a/core/api/src/main/java/org/onlab/onos/cluster/MastershipTerm.java
+++ b/core/api/src/main/java/org/onlab/onos/cluster/MastershipTerm.java
@@ -1,6 +1,46 @@
package org.onlab.onos.cluster;
-public class MastershipTerm {
- private final NodeId master = null;
+import java.util.Objects;
+
+public final class MastershipTerm {
+
+ private final NodeId master;
private int termNumber;
+
+ private MastershipTerm(NodeId master, int term) {
+ this.master = master;
+ this.termNumber = term;
+ }
+
+ public static MastershipTerm of(NodeId master, int term) {
+ return new MastershipTerm(master, term);
+ }
+
+ public NodeId master() {
+ return master;
+ }
+
+ public int termNumber() {
+ return termNumber;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(master, termNumber);
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other instanceof MastershipTerm) {
+ MastershipTerm that = (MastershipTerm) other;
+ if (!this.master.equals(that.master)) {
+ return false;
+ }
+ if (this.termNumber != that.termNumber) {
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
}