blob: 640180d9a133af1b368430b843c30fe9f275c817 [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
Ayaka Koshibeb70d34b2014-09-25 15:43:01 -07007public final class MastershipTerm {
8
9 private final NodeId master;
Yuta HIGUCHI22e0f2f2014-09-26 16:30:53 -070010 private final int termNumber;
Ayaka Koshibeb70d34b2014-09-25 15:43:01 -070011
12 private MastershipTerm(NodeId master, int term) {
13 this.master = master;
14 this.termNumber = term;
15 }
16
17 public static MastershipTerm of(NodeId master, int term) {
18 return new MastershipTerm(master, term);
19 }
20
21 public NodeId master() {
22 return master;
23 }
24
25 public int termNumber() {
26 return termNumber;
27 }
28
29 @Override
30 public int hashCode() {
31 return Objects.hash(master, termNumber);
32 }
33
34 @Override
35 public boolean equals(Object other) {
Ayaka Koshibe48239b02014-09-25 17:12:31 -070036 if (this == other) {
37 return true;
38 }
Ayaka Koshibeb70d34b2014-09-25 15:43:01 -070039 if (other instanceof MastershipTerm) {
40 MastershipTerm that = (MastershipTerm) other;
41 if (!this.master.equals(that.master)) {
42 return false;
43 }
44 if (this.termNumber != that.termNumber) {
45 return false;
46 }
47 return true;
48 }
49 return false;
50 }
Yuta HIGUCHI080d7842014-09-25 13:53:15 -070051}