BUG-223: Support having multiple RIB instances
[bgpcep.git] / bgp / rib-impl-config / src / main / java / org / opendaylight / controller / config / yang / bgp / rib / impl / RIBImplModule.java
1 /**
2  * Generated file
3
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
7  *
8  * Do not modify this file unless it is present under src/main directory
9  */
10 package org.opendaylight.controller.config.yang.bgp.rib.impl;
11
12 import org.opendaylight.controller.config.api.JmxAttributeValidationException;
13 import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
14 import org.opendaylight.protocol.bgp.parser.BGPSessionListener;
15 import org.opendaylight.protocol.bgp.rib.impl.BGP;
16 import org.opendaylight.protocol.bgp.rib.impl.BGPPeer;
17 import org.opendaylight.protocol.bgp.rib.impl.RIBImpl;
18 import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
19 import org.opendaylight.protocol.concepts.ListenerRegistration;
20 import org.opendaylight.protocol.framework.ReconnectStrategy;
21 import org.opendaylight.protocol.framework.ReconnectStrategyFactory;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.RibId;
23
24 /**
25  *
26  */
27 public final class RIBImplModule
28 extends
29 org.opendaylight.controller.config.yang.bgp.rib.impl.AbstractRIBImplModule {
30
31         public RIBImplModule(
32                         final org.opendaylight.controller.config.api.ModuleIdentifier name,
33                         final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
34                 super(name, dependencyResolver);
35         }
36
37         public RIBImplModule(
38                         final org.opendaylight.controller.config.api.ModuleIdentifier name,
39                         final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
40                         final RIBImplModule oldModule, final java.lang.AutoCloseable oldInstance) {
41                 super(name, dependencyResolver, oldModule, oldInstance);
42         }
43
44         @Override
45         public void validate() {
46                 super.validate();
47                 JmxAttributeValidationException.checkNotNull(getExtensions(),
48                                 "is not set.", extensionsJmxAttribute);
49         }
50
51         @Override
52         public java.lang.AutoCloseable createInstance() {
53                 RibImplCloseable rib = new RibImplCloseable(getRibId(), getExtensionsDependency(), getDataProviderDependency());
54                 BGP bgp = getBgpDependency();
55                 final BGPPeer peer = new BGPPeer(rib, "peer-" + bgp.toString());
56
57                 ListenerRegistration<BGPSessionListener> reg = bgp
58                                 .registerUpdateListener(peer,
59                                                 new ReconnectStrategyFactory() {
60                                         @Override
61                                         public ReconnectStrategy createReconnectStrategy() {
62                                                 return getTcpReconnectStrategyDependency();
63                                         }
64                                 }, getSessionReconnectStrategyDependency());
65                 rib.setListenerRegistration(reg);
66                 return rib;
67         }
68
69         private static final class RibImplCloseable extends RIBImpl implements AutoCloseable {
70                 private ListenerRegistration<BGPSessionListener> reg;
71
72                 private RibImplCloseable(final RibId ribId, final RIBExtensionConsumerContext extensions, final DataProviderService dps) {
73                         super(ribId, extensions, dps);
74                 }
75
76                 @Override
77                 public void close() throws Exception {
78                         reg.close();
79                 }
80
81                 public void setListenerRegistration(final ListenerRegistration<BGPSessionListener> reg) {
82                         this.reg = reg;
83                 }
84         }
85 }