blob: 71d08f2656ec4df5fa0ee099def1867955ec1988 [file] [log] [blame]
Yuta HIGUCHIfa891c92014-10-09 15:21:40 -07001package org.onlab.onos.cluster;
Yuta HIGUCHI080d7842014-09-25 13:53:15 -07002
Ayaka Koshibeb70d34b2014-09-25 15:43:01 -07003import java.util.Objects;
4
Yuta HIGUCHIfa891c92014-10-09 15:21:40 -07005public final class MastershipTerm {
Ayaka Koshibeb70d34b2014-09-25 15:43:01 -07006
7 private final NodeId master;
Yuta HIGUCHI22e0f2f2014-09-26 16:30:53 -07008 private final int termNumber;
Ayaka Koshibeb70d34b2014-09-25 15:43:01 -07009
Yuta HIGUCHIfa891c92014-10-09 15:21:40 -070010 private MastershipTerm(NodeId master, int term) {
Ayaka Koshibeb70d34b2014-09-25 15:43:01 -070011 this.master = master;
12 this.termNumber = term;
13 }
14
Yuta HIGUCHIfa891c92014-10-09 15:21:40 -070015 public static MastershipTerm of(NodeId master, int term) {
16 return new MastershipTerm(master, term);
Ayaka Koshibeb70d34b2014-09-25 15:43:01 -070017 }
18
19 public NodeId master() {
20 return master;
21 }
22
23 public int termNumber() {
24 return termNumber;
25 }
26
27 @Override
28 public int hashCode() {
29 return Objects.hash(master, termNumber);
30 }
31
32 @Override
33 public boolean equals(Object other) {
Ayaka Koshibe48239b02014-09-25 17:12:31 -070034 if (this == other) {
35 return true;
36 }
Yuta HIGUCHIfa891c92014-10-09 15:21:40 -070037 if (other instanceof MastershipTerm) {
38 MastershipTerm that = (MastershipTerm) other;
Ayaka Koshibeb70d34b2014-09-25 15:43:01 -070039 if (!this.master.equals(that.master)) {
40 return false;
41 }
42 if (this.termNumber != that.termNumber) {
43 return false;
44 }
45 return true;
46 }
47 return false;
48 }
Yuta HIGUCHI080d7842014-09-25 13:53:15 -070049}