X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fnetconf-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fimpl%2Fosgi%2FNetconfImplActivator.java;h=95f7353600fcfb67a5626a496d76642613c4bb5a;hb=aa186fdb5e8950f06824cf907aaad96e8cbed93e;hp=b30c80b43d964426839306477a3c84a4d28084fd;hpb=1a556d2ed47c7ea285baa07900e14d092a4a6cfa;p=controller.git diff --git a/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/osgi/NetconfImplActivator.java b/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/osgi/NetconfImplActivator.java index b30c80b43d..95f7353600 100644 --- a/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/osgi/NetconfImplActivator.java +++ b/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/osgi/NetconfImplActivator.java @@ -9,8 +9,7 @@ package org.opendaylight.controller.netconf.impl.osgi; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.util.HashedWheelTimer; -import java.lang.management.ManagementFactory; -import java.net.InetSocketAddress; +import org.opendaylight.controller.netconf.api.monitoring.NetconfMonitoringService; import org.opendaylight.controller.netconf.impl.DefaultCommitNotificationProducer; import org.opendaylight.controller.netconf.impl.NetconfServerDispatcher; import org.opendaylight.controller.netconf.impl.NetconfServerSessionListenerFactory; @@ -19,9 +18,15 @@ import org.opendaylight.controller.netconf.impl.SessionIdProvider; import org.opendaylight.controller.netconf.util.osgi.NetconfConfigUtil; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.lang.management.ManagementFactory; +import java.net.InetSocketAddress; +import java.util.Dictionary; +import java.util.Hashtable; + public class NetconfImplActivator implements BundleActivator { private static final Logger logger = LoggerFactory.getLogger(NetconfImplActivator.class); @@ -31,6 +36,7 @@ public class NetconfImplActivator implements BundleActivator { private NetconfServerDispatcher dispatch; private NioEventLoopGroup eventLoopGroup; private HashedWheelTimer timer; + private ServiceRegistration regMonitoring; @Override public void start(final BundleContext context) throws Exception { @@ -38,18 +44,20 @@ public class NetconfImplActivator implements BundleActivator { "TCP is not configured, netconf not available.", false); NetconfOperationServiceFactoryListenerImpl factoriesListener = new NetconfOperationServiceFactoryListenerImpl(); - factoriesTracker = new NetconfOperationServiceFactoryTracker(context, factoriesListener); - factoriesTracker.open(); + startOperationServiceFactoryTracker(context, factoriesListener); SessionIdProvider idProvider = new SessionIdProvider(); timer = new HashedWheelTimer(); + long connectionTimeoutMillis = NetconfConfigUtil.extractTimeoutMillis(context); NetconfServerSessionNegotiatorFactory serverNegotiatorFactory = new NetconfServerSessionNegotiatorFactory( - timer, factoriesListener, idProvider); + timer, factoriesListener, idProvider, connectionTimeoutMillis); commitNot = new DefaultCommitNotificationProducer(ManagementFactory.getPlatformMBeanServer()); + NetconfMonitoringServiceImpl monitoringService = startMonitoringService(context, factoriesListener); + NetconfServerSessionListenerFactory listenerFactory = new NetconfServerSessionListenerFactory( - factoriesListener, commitNot, idProvider); + factoriesListener, commitNot, idProvider, monitoringService); eventLoopGroup = new NioEventLoopGroup(); @@ -62,6 +70,19 @@ public class NetconfImplActivator implements BundleActivator { } + private void startOperationServiceFactoryTracker(BundleContext context, NetconfOperationServiceFactoryListenerImpl factoriesListener) { + factoriesTracker = new NetconfOperationServiceFactoryTracker(context, factoriesListener); + factoriesTracker.open(); + } + + private NetconfMonitoringServiceImpl startMonitoringService(BundleContext context, NetconfOperationServiceFactoryListenerImpl factoriesListener) { + NetconfMonitoringServiceImpl netconfMonitoringServiceImpl = new NetconfMonitoringServiceImpl(factoriesListener); + Dictionary dic = new Hashtable<>(); + regMonitoring = context.registerService(NetconfMonitoringService.class, netconfMonitoringServiceImpl, dic); + + return netconfMonitoringServiceImpl; + } + @Override public void stop(final BundleContext context) throws Exception { logger.info("Shutting down netconf because YangStoreService service was removed"); @@ -69,5 +90,8 @@ public class NetconfImplActivator implements BundleActivator { commitNot.close(); eventLoopGroup.shutdownGracefully(); timer.stop(); + + regMonitoring.unregister(); + factoriesTracker.close(); } }