[ONOS-2607] BGP LS topology provider interface and listen on Node and Link changes of BGP Controller.
Change-Id: Iccd4af75e25c3d4da703bd8e34afb19aabf096a4
diff --git a/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPControllerImpl.java b/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPControllerImpl.java
index 08c1fa2..35c31ab 100755
--- a/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPControllerImpl.java
+++ b/bgp/ctl/src/main/java/org/onosproject/bgp/controller/impl/BGPControllerImpl.java
@@ -16,7 +16,9 @@
package org.onosproject.bgp.controller.impl;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@@ -28,6 +30,8 @@
import org.onosproject.bgp.controller.BGPController;
import org.onosproject.bgp.controller.BGPId;
import org.onosproject.bgp.controller.BGPPeer;
+import org.onosproject.bgp.controller.BgpLinkListener;
+import org.onosproject.bgp.controller.BgpNodeListener;
import org.onosproject.bgp.controller.BgpPeerManager;
import org.onosproject.bgpio.exceptions.BGPParseException;
import org.onosproject.bgpio.protocol.BGPMessage;
@@ -43,6 +47,10 @@
protected ConcurrentHashMap<BGPId, BGPPeer> connectedPeers = new ConcurrentHashMap<BGPId, BGPPeer>();
protected BGPPeerManagerImpl peerManager = new BGPPeerManagerImpl();
+
+ protected Set<BgpNodeListener> bgpNodeListener = new CopyOnWriteArraySet<>();
+ protected Set<BgpLinkListener> bgpLinkListener = new CopyOnWriteArraySet<>();
+
final Controller ctrl = new Controller(this);
private BGPConfig bgpconfig = new BGPConfig();
@@ -72,6 +80,36 @@
}
@Override
+ public void addListener(BgpNodeListener listener) {
+ this.bgpNodeListener.add(listener);
+ }
+
+ @Override
+ public void removeListener(BgpNodeListener listener) {
+ this.bgpNodeListener.remove(listener);
+ }
+
+ @Override
+ public Set<BgpNodeListener> listener() {
+ return bgpNodeListener;
+ }
+
+ @Override
+ public void addLinkListener(BgpLinkListener listener) {
+ this.bgpLinkListener.add(listener);
+ }
+
+ @Override
+ public void removeLinkListener(BgpLinkListener listener) {
+ this.bgpLinkListener.remove(listener);
+ }
+
+ @Override
+ public Set<BgpLinkListener> linkListener() {
+ return bgpLinkListener;
+ }
+
+ @Override
public void writeMsg(BGPId bgpId, BGPMessage msg) {
this.getPeer(bgpId).sendMessage(msg);
}