import org.opendaylight.protocol.bgp.rib.impl.ApplicationPeer;
import org.opendaylight.protocol.bgp.rib.impl.spi.BgpDeployer.WriteConfiguration;
import org.opendaylight.protocol.bgp.rib.impl.spi.RIB;
+import org.opendaylight.protocol.bgp.rib.spi.state.BGPPeerState;
+import org.opendaylight.protocol.bgp.rib.spi.state.BGPPeerStateConsumer;
import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.Config;
import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbors.Neighbor;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.Tables;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.osgi.framework.ServiceRegistration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public final class AppPeer implements PeerBean {
+public final class AppPeer implements PeerBean, BGPPeerStateConsumer {
private static final Logger LOG = LoggerFactory.getLogger(AppPeer.class);
private static final QName APP_ID_QNAME = QName.create(ApplicationRib.QNAME, "id").intern();
private Neighbor currentConfiguration;
private BgpAppPeerSingletonService bgpAppPeerSingletonService;
+ private ServiceRegistration<?> serviceRegistration;
@Override
public void start(final RIB rib, final Neighbor neighbor, final BGPTableTypeRegistryConsumer tableTypeRegistry,
} catch (final Exception e) {
LOG.warn("Failed to close application peer instance", e);
}
+ if (this.serviceRegistration != null) {
+ this.serviceRegistration.unregister();
+ this.serviceRegistration = null;
+ }
}
@Override
return new ApplicationRibId(neighbor.getNeighborAddress().getIpv4Address().getValue());
}
- private final class BgpAppPeerSingletonService implements ClusterSingletonService, AutoCloseable {
+ @Override
+ public BGPPeerState getPeerState() {
+ return this.bgpAppPeerSingletonService.getPeerState();
+ }
+
+ void setServiceRegistration(final ServiceRegistration<?> serviceRegistration) {
+ this.serviceRegistration = serviceRegistration;
+ }
+
+ private final class BgpAppPeerSingletonService implements ClusterSingletonService, BGPPeerStateConsumer,
+ AutoCloseable {
private final ApplicationPeer applicationPeer;
private final DOMDataTreeChangeService dataTreeChangeService;
private final ApplicationRibId appRibId;
public ServiceGroupIdentifier getIdentifier() {
return this.serviceGroupIdentifier;
}
+
+ @Override
+ public BGPPeerState getPeerState() {
+ return this.applicationPeer.getPeerState();
+ }
}
}
\ No newline at end of file