began adding pieces for mastership service
Change-Id: Iae786c6d4d11e9872dc5d5355ebef929a21fee0d
diff --git a/core/api/src/main/java/org/onlab/onos/cluster/MastershipEvent.java b/core/api/src/main/java/org/onlab/onos/cluster/MastershipEvent.java
new file mode 100644
index 0000000..e0d2756
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/cluster/MastershipEvent.java
@@ -0,0 +1,58 @@
+package org.onlab.onos.cluster;
+
+import org.onlab.onos.event.AbstractEvent;
+import org.onlab.onos.net.DeviceId;
+
+/**
+ * Describes infrastructure device event.
+ */
+public class MastershipEvent extends AbstractEvent<MastershipEvent.Type, DeviceId> {
+
+ InstanceId master;
+
+ /**
+ * Type of mastership events.
+ */
+ public enum Type {
+ /**
+ * Signifies that the master for a device has changed.
+ */
+ MASTER_CHANGED
+ }
+
+ /**
+ * Creates an event of a given type and for the specified device, master,
+ * and the current time.
+ *
+ * @param type device event type
+ * @param device event device subject
+ * @param master master ID subject
+ */
+ protected MastershipEvent(Type type, DeviceId device, InstanceId master) {
+ super(type, device);
+ this.master = master;
+ }
+
+ /**
+ * Creates an event of a given type and for the specified device, master,
+ * and time.
+ *
+ * @param type mastership event type
+ * @param device event device subject
+ * @param master master ID subject
+ * @param time occurrence time
+ */
+ protected MastershipEvent(Type type, DeviceId device, InstanceId master, long time) {
+ super(type, device, time);
+ this.master = master;
+ }
+
+ /**
+ * Returns the current master's ID as a subject.
+ *
+ * @return master ID subject
+ */
+ public InstanceId master() {
+ return master;
+ }
+}