Make ByteBuffer wrapped ID available.
We often need ByteBuffer wrapped byte[] to use as a Map key.
So expose ByteBuffer used to build ID.
Change-Id: Ic4b73a779faacf262b44735d21111b279ac2467e
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 a4c3450..e9ba12e 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceEvent.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceEvent.java
@@ -81,12 +81,15 @@
}
// Assuming mac is unique cluster-wide
- public static byte[] getDeviceID(final byte[] mac) {
- return ByteBuffer.allocate(2 + mac.length).putChar('D').put(mac)
- .array();
+ public static ByteBuffer getDeviceID(final byte[] mac) {
+ return ByteBuffer.allocate(2 + mac.length).putChar('D').put(mac);
}
public byte[] getID() {
+ return getDeviceID(mac.toBytes()).array();
+ }
+
+ public ByteBuffer getIDasByteBuffer() {
return getDeviceID(mac.toBytes());
}
}
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 d12e99c..361c298 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkEvent.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkEvent.java
@@ -50,15 +50,20 @@
public static final int LINKID_BYTES = 2 + PortEvent.PORTID_BYTES * 2;
- public static byte[] getLinkID(Long src_dpid, Long src_port_no,
+ public static ByteBuffer 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();
+ .put(PortEvent.getPortID(dst_dpid, dst_port_no));
}
public byte[] getID() {
return getLinkID(src.getDpid(), src.getNumber(),
+ dst.getDpid(), dst.getNumber()).array();
+ }
+
+ public ByteBuffer getIDasByteBuffer() {
+ return getLinkID(src.getDpid(), src.getNumber(),
dst.getDpid(), dst.getNumber());
}
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 f89cdf8..b926037 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortEvent.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortEvent.java
@@ -102,7 +102,7 @@
public static final int PORTID_BYTES = SwitchEvent.SWITCHID_BYTES + 2 + 8;
- public static byte[] getPortID(Long dpid, Long number) {
+ public static ByteBuffer getPortID(Long dpid, Long number) {
if (dpid == null) {
throw new IllegalArgumentException("dpid cannot be null");
}
@@ -110,10 +110,14 @@
throw new IllegalArgumentException("number cannot be null");
}
return ByteBuffer.allocate(PortEvent.PORTID_BYTES).putChar('S').putLong(dpid)
- .putChar('P').putLong(number).array();
+ .putChar('P').putLong(number);
}
public byte[] getID() {
+ return getPortID(getDpid(), getNumber()).array();
+ }
+
+ public ByteBuffer getIDasByteBuffer() {
return getPortID(getDpid(), getNumber());
}
}
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 ea5b66d..0a25c47 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchEvent.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchEvent.java
@@ -35,15 +35,18 @@
public static final int SWITCHID_BYTES = 2 + 8;
- public static byte[] getSwitchID(Long dpid) {
+ public static ByteBuffer getSwitchID(Long dpid) {
if (dpid == null) {
throw new IllegalArgumentException("dpid cannot be null");
}
- return ByteBuffer.allocate(SwitchEvent.SWITCHID_BYTES).putChar('S').putLong(dpid)
- .array();
+ return ByteBuffer.allocate(SwitchEvent.SWITCHID_BYTES).putChar('S').putLong(dpid);
}
public byte[] getID() {
+ return getSwitchID(dpid).array();
+ }
+
+ public ByteBuffer getIDasByteBuffer() {
return getSwitchID(dpid);
}
}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java
index aa1147e..c18f1cc 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/TopologyManager.java
@@ -213,25 +213,25 @@
case ENTRY_ADD:
log.debug("Topology event ENTRY_ADD: {}", topologyEvent);
if (switchEvent != null) {
- ByteBuffer id = ByteBuffer.wrap(switchEvent.getID());
+ ByteBuffer id = switchEvent.getIDasByteBuffer();
addedSwitchEvents.put(id, switchEvent);
removedSwitchEvents.remove(id);
// Switch Events are not affected by event reordering
}
if (portEvent != null) {
- ByteBuffer id = ByteBuffer.wrap(portEvent.getID());
+ ByteBuffer id = portEvent.getIDasByteBuffer();
addedPortEvents.put(id, portEvent);
removedPortEvents.remove(id);
reorderedAddedPortEvents.remove(id);
}
if (linkEvent != null) {
- ByteBuffer id = ByteBuffer.wrap(linkEvent.getID());
+ ByteBuffer id = linkEvent.getIDasByteBuffer();
addedLinkEvents.put(id, linkEvent);
removedLinkEvents.remove(id);
reorderedAddedLinkEvents.remove(id);
}
if (deviceEvent != null) {
- ByteBuffer id = ByteBuffer.wrap(deviceEvent.getID());
+ ByteBuffer id = deviceEvent.getIDasByteBuffer();
addedDeviceEvents.put(id, deviceEvent);
removedDeviceEvents.remove(id);
reorderedAddedDeviceEvents.remove(id);
@@ -240,25 +240,25 @@
case ENTRY_REMOVE:
log.debug("Topology event ENTRY_REMOVE: {}", topologyEvent);
if (switchEvent != null) {
- ByteBuffer id = ByteBuffer.wrap(switchEvent.getID());
+ ByteBuffer id = switchEvent.getIDasByteBuffer();
addedSwitchEvents.remove(id);
removedSwitchEvents.put(id, switchEvent);
// Switch Events are not affected by event reordering
}
if (portEvent != null) {
- ByteBuffer id = ByteBuffer.wrap(portEvent.getID());
+ ByteBuffer id = portEvent.getIDasByteBuffer();
addedPortEvents.remove(id);
removedPortEvents.put(id, portEvent);
reorderedAddedPortEvents.remove(id);
}
if (linkEvent != null) {
- ByteBuffer id = ByteBuffer.wrap(linkEvent.getID());
+ ByteBuffer id = linkEvent.getIDasByteBuffer();
addedLinkEvents.remove(id);
removedLinkEvents.put(id, linkEvent);
reorderedAddedLinkEvents.remove(id);
}
if (deviceEvent != null) {
- ByteBuffer id = ByteBuffer.wrap(deviceEvent.getID());
+ ByteBuffer id = deviceEvent.getIDasByteBuffer();
addedDeviceEvents.remove(id);
removedDeviceEvents.put(id, deviceEvent);
reorderedAddedDeviceEvents.remove(id);
@@ -510,7 +510,7 @@
// Store the new Port Events in the local cache
Map<ByteBuffer, PortEvent> newPortEvents = new HashMap<>();
for (PortEvent portEvent : portEvents) {
- ByteBuffer id = ByteBuffer.wrap(portEvent.getID());
+ ByteBuffer id = portEvent.getIDasByteBuffer();
newPortEvents.put(id, portEvent);
}
discoveredAddedPortEvents.put(switchEvent.getDpid(),
@@ -585,7 +585,7 @@
discoveredAddedPortEvents.put(portEvent.getDpid(),
oldPortEvents);
}
- ByteBuffer id = ByteBuffer.wrap(portEvent.getID());
+ ByteBuffer id = portEvent.getIDasByteBuffer();
oldPortEvents.put(id, portEvent);
}
}
@@ -600,7 +600,7 @@
Map<ByteBuffer, PortEvent> oldPortEvents =
discoveredAddedPortEvents.get(portEvent.getDpid());
if (oldPortEvents != null) {
- ByteBuffer id = ByteBuffer.wrap(portEvent.getID());
+ ByteBuffer id = portEvent.getIDasByteBuffer();
oldPortEvents.remove(id);
}
@@ -656,7 +656,7 @@
discoveredAddedLinkEvents.put(linkEvent.getDst().getDpid(),
oldLinkEvents);
}
- ByteBuffer id = ByteBuffer.wrap(linkEvent.getID());
+ ByteBuffer id = linkEvent.getIDasByteBuffer();
oldLinkEvents.put(id, linkEvent);
}
}
@@ -671,7 +671,7 @@
Map<ByteBuffer, LinkEvent> oldLinkEvents =
discoveredAddedLinkEvents.get(linkEvent.getDst().getDpid());
if (oldLinkEvents != null) {
- ByteBuffer id = ByteBuffer.wrap(linkEvent.getID());
+ ByteBuffer id = linkEvent.getIDasByteBuffer();
oldLinkEvents.remove(id);
}
}
@@ -694,7 +694,7 @@
discoveredAddedDeviceEvents.put(swp.getDpid(),
oldDeviceEvents);
}
- ByteBuffer id = ByteBuffer.wrap(deviceEvent.getID());
+ ByteBuffer id = deviceEvent.getIDasByteBuffer();
oldDeviceEvents.put(id, deviceEvent);
}
}
@@ -763,7 +763,7 @@
Switch sw = networkGraph.getSwitch(portEvent.getDpid());
if (sw == null) {
// Reordered event: delay the event in local cache
- ByteBuffer id = ByteBuffer.wrap(portEvent.getID());
+ ByteBuffer id = portEvent.getIDasByteBuffer();
reorderedAddedPortEvents.put(id, portEvent);
return;
}
@@ -842,7 +842,7 @@
linkEvent.getDst().number);
if ((srcPort == null) || (dstPort == null)) {
// Reordered event: delay the event in local cache
- ByteBuffer id = ByteBuffer.wrap(linkEvent.getID());
+ ByteBuffer id = linkEvent.getIDasByteBuffer();
reorderedAddedLinkEvents.put(id, linkEvent);
return;
}
@@ -938,7 +938,7 @@
Port port = networkGraph.getPort(swp.dpid, swp.number);
if (port == null) {
// Reordered event: delay the event in local cache
- ByteBuffer id = ByteBuffer.wrap(deviceEvent.getID());
+ ByteBuffer id = deviceEvent.getIDasByteBuffer();
reorderedAddedDeviceEvents.put(id, deviceEvent);
continue;
}