blob: 216895cace5d89a8ac1d55fa67bc91003a30383f [file] [log] [blame]
Yuta HIGUCHI80912e62014-10-12 00:15:47 -07001package org.onlab.onos.mastership;
Yuta HIGUCHI080d7842014-09-25 13:53:15 -07002
Ayaka Koshibeb70d34b2014-09-25 15:43:01 -07003import java.util.Objects;
4
Yuta HIGUCHI80912e62014-10-12 00:15:47 -07005import org.onlab.onos.cluster.NodeId;
6
Yuta HIGUCHIa9700c72014-10-24 22:12:03 -07007import com.google.common.base.MoreObjects;
8
Ayaka Koshibeb70d34b2014-09-25 15:43:01 -07009public final class MastershipTerm {
10
11 private final NodeId master;
Yuta HIGUCHI22e0f2f2014-09-26 16:30:53 -070012 private final int termNumber;
Ayaka Koshibeb70d34b2014-09-25 15:43:01 -070013
14 private MastershipTerm(NodeId master, int term) {
15 this.master = master;
16 this.termNumber = term;
17 }
18
19 public static MastershipTerm of(NodeId master, int term) {
20 return new MastershipTerm(master, term);
21 }
22
23 public NodeId master() {
24 return master;
25 }
26
27 public int termNumber() {
28 return termNumber;
29 }
30
31 @Override
32 public int hashCode() {
33 return Objects.hash(master, termNumber);
34 }
35
36 @Override
37 public boolean equals(Object other) {
Ayaka Koshibe48239b02014-09-25 17:12:31 -070038 if (this == other) {
39 return true;
40 }
Ayaka Koshibeb70d34b2014-09-25 15:43:01 -070041 if (other instanceof MastershipTerm) {
42 MastershipTerm that = (MastershipTerm) other;
43 if (!this.master.equals(that.master)) {
44 return false;
45 }
46 if (this.termNumber != that.termNumber) {
47 return false;
48 }
49 return true;
50 }
51 return false;
52 }
Yuta HIGUCHIa9700c72014-10-24 22:12:03 -070053
54 @Override
55 public String toString() {
56 return MoreObjects.toStringHelper(getClass())
57 .add("master", this.master)
58 .add("termNumber", this.termNumber)
59 .toString();
60 }
Yuta HIGUCHI080d7842014-09-25 13:53:15 -070061}