blob: dbf36a527ec04b6a0c830b9c15afd7b89c161241 [file] [log] [blame]
Madan Jampani1d3494e2014-11-20 11:24:22 -08001package org.onlab.onos.cluster;
2
3import java.util.Objects;
4
5import com.google.common.base.MoreObjects;
6
7/**
8 * Abstract leadership concept.
9 */
10public class Leadership {
11
12 private final String topic;
13 private final ControllerNode leader;
Madan Jampani1ee91782014-11-20 20:24:24 -080014 private final long epoch;
Madan Jampani1d3494e2014-11-20 11:24:22 -080015
Madan Jampani1ee91782014-11-20 20:24:24 -080016 public Leadership(String topic, ControllerNode leader, long epoch) {
Madan Jampani1d3494e2014-11-20 11:24:22 -080017 this.topic = topic;
18 this.leader = leader;
Madan Jampani1ee91782014-11-20 20:24:24 -080019 this.epoch = epoch;
Madan Jampani1d3494e2014-11-20 11:24:22 -080020 }
21
22 /**
23 * The topic for which this leadership applies.
24 * @return leadership topic.
25 */
26 public String topic() {
27 return topic;
28 }
29
30 /**
31 * The leader for this topic.
32 * @return leader node.
33 */
34 public ControllerNode leader() {
35 return leader;
36 }
37
38 /**
Madan Jampani1ee91782014-11-20 20:24:24 -080039 * The epoch when the leadership was assumed.
40 * @return leadership epoch
Madan Jampani1d3494e2014-11-20 11:24:22 -080041 */
Madan Jampani1ee91782014-11-20 20:24:24 -080042 public long epoch() {
43 return epoch;
Madan Jampani1d3494e2014-11-20 11:24:22 -080044 }
45
46 @Override
47 public int hashCode() {
Madan Jampani1ee91782014-11-20 20:24:24 -080048 return Objects.hash(topic, leader, epoch);
Madan Jampani1d3494e2014-11-20 11:24:22 -080049 }
50
51 @Override
52 public String toString() {
53 return MoreObjects.toStringHelper(this.getClass())
54 .add("topic", topic)
55 .add("leader", leader)
Madan Jampani1ee91782014-11-20 20:24:24 -080056 .add("epoch", epoch)
Madan Jampani1d3494e2014-11-20 11:24:22 -080057 .toString();
58 }
59}