4 * Generated from: yang module name: bgp-rib-impl yang module local name: rib-impl
5 * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
6 * Generated at: Wed Nov 06 13:02:32 CET 2013
8 * Do not modify this file unless it is present under src/main directory
10 package org.opendaylight.controller.config.yang.bgp.rib.impl;
12 import io.netty.util.concurrent.GlobalEventExecutor;
14 import java.io.IOException;
16 import org.opendaylight.controller.sal.binding.api.AbstractBindingAwareProvider;
17 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
18 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
19 import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
20 import org.opendaylight.protocol.bgp.parser.BGPSessionListener;
21 import org.opendaylight.protocol.bgp.rib.impl.BGP;
22 import org.opendaylight.protocol.bgp.rib.impl.BGPPeer;
23 import org.opendaylight.protocol.bgp.rib.impl.RIBImpl;
24 import org.opendaylight.protocol.concepts.ListenerRegistration;
25 import org.opendaylight.protocol.framework.TimedReconnectStrategy;
26 import org.osgi.framework.BundleContext;
28 import com.google.common.base.Preconditions;
33 public final class RIBImplModule
35 org.opendaylight.controller.config.yang.bgp.rib.impl.AbstractRIBImplModule {
38 org.opendaylight.controller.config.api.ModuleIdentifier name,
39 org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
40 super(name, dependencyResolver);
44 org.opendaylight.controller.config.api.ModuleIdentifier name,
45 org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
46 RIBImplModule oldModule, java.lang.AutoCloseable oldInstance) {
47 super(name, dependencyResolver, oldModule, oldInstance);
51 public void validate() {
53 // Add custom validation for module attributes here.
57 public java.lang.AutoCloseable createInstance() {
58 BAProvider provider = new BAProvider();
60 ProviderContext providerContext = ((BindingAwareBroker) getOsgiRegistry())
61 .registerProvider(provider, provider.ctx);
62 DataProviderService dataProviderService = providerContext
63 .getSALService(DataProviderService.class);
64 RIBImpl rib = new RIBImpl(dataProviderService);
65 BGP bgp = getBgpDependency();
66 final BGPPeer peer = new BGPPeer(rib, "peer-" + bgp.toString());
69 final long reconnects = getReconnectAttempts();
70 ListenerRegistration<BGPSessionListener> reg = bgp
71 .registerUpdateListener(peer, new TimedReconnectStrategy(
72 GlobalEventExecutor.INSTANCE,
73 getConnectionTimeout(), 5000, 1.0, null,
75 return new RibImplCloseable(reg, rib);
76 } catch (IOException e) {
77 throw new RuntimeException("Failed to register with BGP", e);
81 private static final class RibImplCloseable implements AutoCloseable {
82 private final ListenerRegistration<BGPSessionListener> reg;
83 private final RIBImpl innerRib;
85 private RibImplCloseable(ListenerRegistration<BGPSessionListener> reg,
88 this.innerRib = innerRib;
92 public void close() throws Exception {
97 private static final class BAProvider extends AbstractBindingAwareProvider {
102 public void onSessionInitiated(ProviderContext session) {
107 protected void startImpl(final BundleContext context) {
108 this.ctx = Preconditions.checkNotNull(context);