Ignore event originating from itself
- Hand registryService to NetworkGraphImpl
- Add OriginID to TopologyEvent. (May need to come up with better name)
- Set OriginID on Add/Put event
- TBD: Cannot add OriginID on remove event
Change-Id: I89b793a48265f2617483651a33ebca1863df7e1f
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
index 176e793..8b6faeb 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
@@ -19,6 +19,7 @@
import net.onrc.onos.ofcontroller.networkgraph.PortEvent.SwitchPort;
import net.onrc.onos.ofcontroller.util.EventEntry;
import net.onrc.onos.ofcontroller.util.Dpid;
+import net.onrc.onos.registry.controller.IControllerRegistryService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,10 +49,12 @@
private EventHandler eventHandler = new EventHandler();
private final NetworkGraphDatastore datastore;
+ private final IControllerRegistryService registryService;
- public NetworkGraphImpl() {
+ public NetworkGraphImpl(IControllerRegistryService registryService) {
super();
datastore = new NetworkGraphDatastore(this);
+ this.registryService = registryService;
}
/**
@@ -119,7 +122,10 @@
*/
private void processEvents(Collection<EventEntry<TopologyEvent>> events) {
for (EventEntry<TopologyEvent> event : events) {
- // TODO ignore event triggered by myself
+ if (event.eventData().getOriginID().equals(registryService.getControllerId())) {
+ // ignore event triggered by myself
+ continue;
+ }
TopologyEvent topologyEvent = event.eventData();
switch (event.eventType()) {
case ENTRY_ADD:
@@ -227,7 +233,7 @@
putSwitch(switchEvent);
// Send out notification
TopologyEvent topologyEvent =
- new TopologyEvent(switchEvent);
+ new TopologyEvent(switchEvent, registryService.getControllerId());
eventChannel.addEntry(topologyEvent.getID(),
topologyEvent);
}
@@ -252,7 +258,7 @@
putPort(portEvent);
// Send out notification
TopologyEvent topologyEvent =
- new TopologyEvent(portEvent);
+ new TopologyEvent(portEvent, registryService.getControllerId());
eventChannel.addEntry(topologyEvent.getID(),
topologyEvent);
}
@@ -277,7 +283,7 @@
putLink(linkEvent);
// Send out notification
TopologyEvent topologyEvent =
- new TopologyEvent(linkEvent);
+ new TopologyEvent(linkEvent, registryService.getControllerId());
eventChannel.addEntry(topologyEvent.getID(),
topologyEvent);
}
@@ -305,7 +311,7 @@
// putDevice(deviceEvent);
// Send out notification
TopologyEvent topologyEvent =
- new TopologyEvent(deviceEvent);
+ new TopologyEvent(deviceEvent, registryService.getControllerId());
eventChannel.addEntry(topologyEvent.getID(),
topologyEvent);
}