package org.opendaylight.controller.md.statistics.manager;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.statistics.manager.impl.StatisticsManagerImpl;
import org.opendaylight.controller.sal.binding.api.AbstractBindingAwareProvider;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
-import org.opendaylight.controller.sal.binding.api.data.DataBrokerService;
-import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
import org.osgi.framework.BundleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.google.common.annotations.VisibleForTesting;
+
+/**
+ * Statistics Manager Activator
+ *
+ * OSGi bundle activator
+ *
+ */
public class StatisticsManagerActivator extends AbstractBindingAwareProvider {
- private static ProviderContext pSession;
-
- private static StatisticsProvider statsProvider = new StatisticsProvider();
-
- @Override
- public void onSessionInitiated(ProviderContext session) {
-
- pSession = session;
- DataProviderService dps = session.<DataProviderService>getSALService(DataProviderService.class);
- StatisticsManagerActivator.statsProvider.setDataService(dps);
- DataBrokerService dbs = session.<DataBrokerService>getSALService(DataBrokerService.class);
- StatisticsManagerActivator.statsProvider.setDataBrokerService(dbs);
- NotificationProviderService nps = session.<NotificationProviderService>getSALService(NotificationProviderService.class);
- StatisticsManagerActivator.statsProvider.setNotificationService(nps);
- StatisticsManagerActivator.statsProvider.start();
+ private final static Logger LOG = LoggerFactory.getLogger(StatisticsManagerActivator.class);
+
+ /* TODO move it to ConfigSubsystem */
+ private static final long DEFAULT_MIN_REQUEST_NET_MONITOR_INTERVAL = 3000L;
+ private static final int MAX_NODES_FOR_COLLECTOR = 8;
+
+ private StatisticsManager statsProvider;
- }
-
@Override
- protected void stopImpl(BundleContext context) {
- StatisticsManagerActivator.statsProvider.close();
+ public void onSessionInitiated(final ProviderContext session) {
+ LOG.info("StatisticsManagerActivator initialization.");
+ try {
+ final DataBroker dataBroker = session.getSALService(DataBroker.class);
+ final NotificationProviderService notifService =
+ session.getSALService(NotificationProviderService.class);
+ statsProvider = new StatisticsManagerImpl(dataBroker, MAX_NODES_FOR_COLLECTOR);
+ statsProvider.start(notifService, session, DEFAULT_MIN_REQUEST_NET_MONITOR_INTERVAL);
+ LOG.info("StatisticsManagerActivator started successfully.");
+ }
+ catch (final Exception e) {
+ LOG.error("Unexpected error by initialization of StatisticsManagerActivator", e);
+ stopImpl(null);
+ }
}
-
- public static ProviderContext getProviderContext(){
- return pSession;
+
+ @VisibleForTesting
+ StatisticsManager getStatisticManager() {
+ return statsProvider;
}
+ @Override
+ protected void stopImpl(final BundleContext context) {
+ if (statsProvider != null) {
+ try {
+ statsProvider.close();
+ }
+ catch (final Exception e) {
+ LOG.error("Unexpected error by stopping StatisticsManagerActivator", e);
+ }
+ statsProvider = null;
+ }
+ LOG.info("StatisticsManagerActivator stoped.");
+ }
}