From b8ce95f5d41843d401b706e390a08c1be4a3b13a Mon Sep 17 00:00:00 2001 From: Srinivasan Ramasubramanian <srini@bigswitch.com> Date: Sat, 28 Jul 2012 23:10:36 -0700 Subject: [PATCH] Add updatesThread. --- .../internal/LinkDiscoveryManager.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java index 9a3441c0e..c775db32d 100644 --- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java +++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java @@ -271,6 +271,30 @@ IFloodlightModule, IInfoProvider, IHAListener { return ILinkDiscovery.LinkType.INVALID_LINK; } + private void doUpdatesThread() throws InterruptedException { + do { + LDUpdate update = updates.take(); + + if (linkDiscoveryAware != null) { + if (log.isTraceEnabled()) { + log.trace("Dispatching link discovery update {} {} {} {} {} for {}", + new Object[]{update.getOperation(), + HexString.toHexString(update.getSrc()), update.getSrcPort(), + HexString.toHexString(update.getDst()), update.getDstPort(), + linkDiscoveryAware}); + } + try { + for (ILinkDiscoveryListener lda : linkDiscoveryAware) { // order maintained + lda.linkDiscoveryUpdate(update); + } + } + catch (Exception e) { + log.error("Error in link discovery updates loop", e); + } + } + } while (updates.peek() != null); + } + private boolean isLLDPSuppressed(long sw, short portNumber) { return this.suppressLLDPs.contains(new NodePortTuple(sw, portNumber)); } @@ -1568,6 +1592,19 @@ IFloodlightModule, IInfoProvider, IHAListener { } }); + updatesThread = new Thread(new Runnable () { + @Override + public void run() { + while (true) { + try { + doUpdatesThread(); + } catch (InterruptedException e) { + return; + } + } + }}, "Topology Updates"); + updatesThread.start(); + // Register for the OpenFlow messages we want to receive floodlightProvider.addOFMessageListener(OFType.PACKET_IN, this); floodlightProvider.addOFMessageListener(OFType.PORT_STATUS, this); -- GitLab