Move ID byte[] generation code to Event object
Change-Id: Iaf8812d8fa8d99f085dd4d4217a8ab6454608c2a
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceEvent.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceEvent.java
index 014fc43..fa7a761 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceEvent.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceEvent.java
@@ -1,6 +1,7 @@
package net.onrc.onos.ofcontroller.networkgraph;
import java.net.InetAddress;
+import java.nio.ByteBuffer;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
@@ -71,5 +72,11 @@
return "[DeviceEvent " + mac + " attachmentPoints:" + attachmentPoints + " ipAddr:" + ipAddresses + "]";
}
+ // Assuming mac is unique cluster-wide
+ public static byte[] getDeviceID(final byte[] mac) {
+ return ByteBuffer.allocate(2 + mac.length).putChar('D').put(mac)
+ .array();
+ }
+
}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkEvent.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkEvent.java
index d9342aa..81f9ba3 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkEvent.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkEvent.java
@@ -1,5 +1,7 @@
package net.onrc.onos.ofcontroller.networkgraph;
+import java.nio.ByteBuffer;
+
import net.onrc.onos.ofcontroller.networkgraph.PortEvent.SwitchPort;
/**
@@ -33,4 +35,13 @@
return "[LinkEvent " + src + "->" + dst + "]";
}
+ public static final int LINKID_BYTES = 2 + PortEvent.PORTID_BYTES * 2;
+
+ public static byte[] getLinkID(Long src_dpid, Long src_port_no,
+ Long dst_dpid, Long dst_port_no) {
+ return ByteBuffer.allocate(LinkEvent.LINKID_BYTES).putChar('L')
+ .put(PortEvent.getPortID(src_dpid, src_port_no))
+ .put(PortEvent.getPortID(dst_dpid, dst_port_no)).array();
+ }
+
}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortEvent.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortEvent.java
index addd695..e4caee5 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortEvent.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortEvent.java
@@ -1,5 +1,7 @@
package net.onrc.onos.ofcontroller.networkgraph;
+import java.nio.ByteBuffer;
+
/**
* Self-contained Port event Object
*
@@ -52,4 +54,17 @@
return "[PortEvent 0x" + Long.toHexString(id.dpid) + "@" + id.number + "]";
}
+ public static final int PORTID_BYTES = SwitchEvent.SWITCHID_BYTES + 2 + 8;
+
+ public static byte[] getPortID(Long dpid, Long number) {
+ if (dpid == null) {
+ throw new IllegalArgumentException("dpid cannot be null");
+ }
+ if (number == null) {
+ throw new IllegalArgumentException("number cannot be null");
+ }
+ return ByteBuffer.allocate(PortEvent.PORTID_BYTES).putChar('S').putLong(dpid)
+ .putChar('P').putLong(number).array();
+ }
+
}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchEvent.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchEvent.java
index 959a7d9..58532ae 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchEvent.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchEvent.java
@@ -1,5 +1,6 @@
package net.onrc.onos.ofcontroller.networkgraph;
+import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
@@ -40,4 +41,14 @@
return "[SwitchEvent 0x" + Long.toHexString(dpid) + "]";
}
+ public static final int SWITCHID_BYTES = 2 + 8;
+
+ public static byte[] getSwitchID(Long dpid) {
+ if (dpid == null) {
+ throw new IllegalArgumentException("dpid cannot be null");
+ }
+ return ByteBuffer.allocate(SwitchEvent.SWITCHID_BYTES).putChar('S').putLong(dpid)
+ .array();
+ }
+
}