[ONOS-2607] BGP LS topology provider interface and listen on Node and Link changes of BGP Controller.

Change-Id: Iccd4af75e25c3d4da703bd8e34afb19aabf096a4
diff --git a/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPController.java b/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPController.java
index faa1de3..9d44041 100755
--- a/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPController.java
+++ b/bgp/api/src/main/java/org/onosproject/bgp/controller/BGPController.java
@@ -17,13 +17,14 @@
 package org.onosproject.bgp.controller;
 
 import java.util.Map;
+import java.util.Set;
 
 import org.onosproject.bgpio.exceptions.BGPParseException;
 import org.onosproject.bgpio.protocol.BGPMessage;
 
 /**
- * Abstraction of an BGP controller. Serves as a one stop shop for obtaining BGP devices and (un)register listeners
- * on bgp events
+ * Abstraction of an BGP controller. Serves as a one stop shop for obtaining BGP devices and (un)register listeners on
+ * bgp events
  */
 public interface BGPController {
 
@@ -43,6 +44,34 @@
     BGPPeer getPeer(BGPId bgpId);
 
     /**
+     * Register a listener for BGP message events.
+     *
+     * @param listener the listener to notify
+     */
+    void addListener(BgpNodeListener listener);
+
+    /**
+     * Unregister a listener.
+     *
+     * @param listener the listener to unregister
+     */
+    void removeListener(BgpNodeListener listener);
+
+    /**
+     * Register a listener for BGP message events.
+     *
+     * @param listener the listener to notify
+     */
+    void addLinkListener(BgpLinkListener listener);
+
+    /**
+     * Unregister a listener.
+     *
+     * @param listener the listener to unregister
+     */
+    void removeLinkListener(BgpLinkListener listener);
+
+    /**
      * Send a message to a particular bgp peer.
      *
      * @param bgpId the id of the peer to send message.
@@ -92,4 +121,18 @@
      * @return connectedPeers connected peers
      */
     Map<BGPId, BGPPeer> connectedPeers();
-}
\ No newline at end of file
+
+    /**
+     * Return BGP node listener.
+     *
+     * @return node listener
+     */
+    Set<BgpNodeListener> listener();
+
+    /**
+     * Return BGP link listener.
+     *
+     * @return link listener
+     */
+    Set<BgpLinkListener> linkListener();
+}