Assigned bugs to FIXMEs.
[bgpcep.git] / bgp / rib-impl / src / main / java / org / opendaylight / protocol / bgp / rib / impl / BGPPeer.java
index 10d3ab5965f94a012f361e6a2b29999d7ffea072..09bb8685d896865d5bf7eedc0a823d011740154c 100644 (file)
@@ -13,8 +13,8 @@ import org.opendaylight.protocol.bgp.parser.BGPSession;
 import org.opendaylight.protocol.bgp.parser.BGPSessionListener;
 import org.opendaylight.protocol.bgp.parser.BGPTerminationReason;
 import org.opendaylight.protocol.bgp.rib.spi.Peer;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130918.Update;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130918.BgpTableType;
+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.multiprotocol.rev130919.BgpTableType;
 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;
@@ -23,6 +23,7 @@ import org.slf4j.LoggerFactory;
 import com.google.common.base.Objects;
 import com.google.common.base.Objects.ToStringHelper;
 import com.google.common.base.Preconditions;
+import com.google.common.collect.Sets;
 
 /**
  * Class representing a peer. We have a single instance for each peer, which provides translation from BGP events into
@@ -30,7 +31,7 @@ import com.google.common.base.Preconditions;
  */
 public final class BGPPeer implements BGPSessionListener, Peer {
        private static final Logger logger = LoggerFactory.getLogger(BGPPeer.class);
-       private Set<TablesKey> tables;
+       private final Set<TablesKey> tables = Sets.newHashSet();
        private final String name;
        private final RIBImpl rib;
 
@@ -57,9 +58,8 @@ public final class BGPPeer implements BGPSessionListener, Peer {
                }
        }
 
-       @Override
-       public void onSessionDown(final BGPSession session, final Exception e) {
-               // FIXME: support graceful restart
+       private void cleanup() {
+               // FIXME: BUG-196: support graceful restart
                for (final TablesKey key : this.tables) {
                        this.rib.clearTable(this, key);
                }
@@ -67,13 +67,20 @@ public final class BGPPeer implements BGPSessionListener, Peer {
                this.tables.clear();
        }
 
+       @Override
+       public void onSessionDown(final BGPSession session, final Exception e) {
+               logger.info("Session with peer {} went down", this.name, e);
+               cleanup();
+       }
+
        @Override
        public void onSessionTerminated(final BGPSession session, final BGPTerminationReason cause) {
                logger.info("Session with peer {} terminated: {}", this.name, cause);
+               cleanup();
        }
 
        @Override
-       public String toString() {
+       public final String toString() {
                return addToStringAttributes(Objects.toStringHelper(this)).toString();
        }