*/
package org.opendaylight.protocol.bgp.testtool;
-import java.util.Set;
-
-import org.opendaylight.protocol.bgp.concepts.BGPTableType;
-import org.opendaylight.protocol.bgp.parser.BGPError;
-import org.opendaylight.protocol.bgp.parser.BGPMessage;
-import org.opendaylight.protocol.bgp.parser.BGPSession;
-import org.opendaylight.protocol.bgp.parser.BGPSessionListener;
-import org.opendaylight.protocol.framework.DispatcherImpl;
+import java.util.List;
+import org.opendaylight.protocol.bgp.rib.impl.BGPSessionImpl;
+import org.opendaylight.protocol.bgp.rib.spi.BGPSession;
+import org.opendaylight.protocol.bgp.rib.spi.BGPSessionListener;
+import org.opendaylight.protocol.bgp.rib.spi.BGPTerminationReason;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.Update;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey;
+import org.opendaylight.yangtools.yang.binding.Notification;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Testing BGP Listener.
*/
-public class TestingListener extends BGPSessionListener {
- private static final Logger logger = LoggerFactory.getLogger(TestingListener.class);
-
- DispatcherImpl d;
-
- TestingListener(final DispatcherImpl d) {
- this.d = d;
- }
-
- @Override
- public void onMessage(final BGPMessage message) {
- logger.info("Client Listener: message received: {}", message.toString());
- }
-
- @Override
- public void onSessionUp(final Set<BGPTableType> remoteParams) {
- logger.info("Client Listener: Session Up.");
- }
-
- @Override
- public void onSessionDown(final BGPSession session, final Exception e) {
- logger.info("Client Listener: Connection lost.");
- session.close();
- // this.d.stop();
- }
-
- @Override
- public void onSessionTerminated(final BGPError cause) {
- logger.info("Client Listener: Connection lost: {}.", cause);
- // this.d.stop();
- }
+final class TestingListener implements BGPSessionListener {
+ private static final Logger LOG = LoggerFactory.getLogger(TestingListener.class);
+ private final int nPrefixes;
+ private final List<String> extCom;
+ private final boolean multiPathSupport;
+ private int messageCounter = 0;
+
+ TestingListener(final int nPrefixes, final List<String> extCom, final boolean multiPathSupport) {
+ this.nPrefixes = nPrefixes;
+ this.extCom = extCom;
+ this.multiPathSupport = multiPathSupport;
+ }
+
+ @Override
+ public void markUptodate(final TablesKey tablesKey) {
+ LOG.debug("Table marked as up-to-date {}", tablesKey);
+ }
+
+ @Override
+ public void onSessionUp(final BGPSession session) {
+ LOG.info("Client Listener: Session Up.");
+ if (this.nPrefixes > 0) {
+ PrefixesBuilder.AdvertiseIpv4Prefixes(((BGPSessionImpl) session).getLimiter(), this.nPrefixes, this.extCom, this.multiPathSupport);
+ }
+ }
+
+ @Override
+ public void onSessionDown(final BGPSession session, final Exception e) {
+ LOG.info("Client Listener: Connection lost.");
+ try {
+ session.close();
+ } catch (Exception ie) {
+ LOG.warn("Error closing session", ie);
+ }
+ }
+
+ @Override
+ public void onSessionTerminated(final BGPSession session, final BGPTerminationReason cause) {
+ LOG.info("Client Listener: Connection lost: {}.", cause);
+ }
+
+ @Override
+ public void onMessage(final BGPSession session, final Notification message) {
+ if (message instanceof Update) {
+ messageCounter++;
+ }
+ LOG.debug("Message received: {}", message.toString());
+ }
+
+ @Override
+ public void releaseConnection() {
+ LOG.info("Client Listener: Connection released.");
+ }
+
+ void printCount(final String localAddress) {
+ LOG.info("Peer {} received {} update messages.", localAddress, messageCounter);
+ }
}