Initial cut at Leadership Manager
Change-Id: I658c6fca3dc6f686e0f7facc9e7b443679ebae1e
Change-Id: I293906add41ff4310e3584847d806345e0312703
Change-Id: I7fb13a72ba4aef10d7c2262b96e0df64efecfcef
diff --git a/core/api/src/main/java/org/onlab/onos/cluster/LeadershipEvent.java b/core/api/src/main/java/org/onlab/onos/cluster/LeadershipEvent.java
index c285eba..246f0fc 100644
--- a/core/api/src/main/java/org/onlab/onos/cluster/LeadershipEvent.java
+++ b/core/api/src/main/java/org/onlab/onos/cluster/LeadershipEvent.java
@@ -15,44 +15,73 @@
*/
package org.onlab.onos.cluster;
+import java.util.Objects;
+
import org.onlab.onos.event.AbstractEvent;
+import com.google.common.base.MoreObjects;
+
/**
* Describes leadership-related event.
*/
-public class LeadershipEvent extends AbstractEvent<LeadershipEvent.Type, ControllerNode> {
+public class LeadershipEvent extends AbstractEvent<LeadershipEvent.Type, Leadership> {
/**
* Type of leadership-related events.
*/
public enum Type {
/**
- * Signifies that the leader has changed. The event subject is the
+ * Signifies that the leader has been elected. The event subject is the
* new leader.
*/
- LEADER_CHANGED
+ LEADER_ELECTED,
+
+ /**
+ * Signifies that the leader has been re-elected. The event subject is the
+ * leader.
+ */
+ LEADER_REELECTED,
+
+ /**
+ * Signifies that the leader has been booted and lost leadership. The event subject is the
+ * former leader.
+ */
+ LEADER_BOOTED
}
/**
* Creates an event of a given type and for the specified instance and the
* current time.
*
- * @param type leadership event type
- * @param instance cluster device subject
+ * @param type leadership event type
+ * @param leadership event subject
*/
- public LeadershipEvent(Type type, ControllerNode instance) {
- super(type, instance);
+ public LeadershipEvent(Type type, Leadership leadership) {
+ super(type, leadership);
}
/**
- * Creates an event of a given type and for the specified device and time.
+ * Creates an event of a given type and for the specified subject and time.
*
- * @param type device event type
- * @param instance event device subject
+ * @param type leadership event type
+ * @param leadership event subject
* @param time occurrence time
*/
- public LeadershipEvent(Type type, ControllerNode instance, long time) {
- super(type, instance, time);
+ public LeadershipEvent(Type type, Leadership leadership, long time) {
+ super(type, leadership, time);
}
+ @Override
+ public int hashCode() {
+ return Objects.hash(type(), subject(), time());
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this.getClass())
+ .add("type", type())
+ .add("subject", subject())
+ .add("time", time())
+ .toString();
+ }
}