1 package org.opendaylight.controller.md.statistics.manager;
3 import org.eclipse.xtext.xbase.lib.Exceptions;
4 import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
5 import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction;
6 import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
7 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.OpendaylightGroupStatisticsService;
8 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.OpendaylightMeterStatisticsService;
9 import org.opendaylight.yangtools.concepts.Registration;
10 import org.opendaylight.yangtools.yang.binding.NotificationListener;
11 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
14 public class StatisticsProvider implements AutoCloseable {
16 public final static Logger spLogger = LoggerFactory.getLogger(StatisticsProvider.class);
18 private DataProviderService dps;
20 private NotificationProviderService nps;
22 private OpendaylightGroupStatisticsService groupStatsService;
24 private OpendaylightMeterStatisticsService meterStatsService;
26 public DataProviderService getDataService() {
30 public void setDataService(final DataProviderService dataService) {
31 this.dps = dataService;
34 public NotificationProviderService getNotificationService() {
38 public void setNotificationService(final NotificationProviderService notificationService) {
39 this.nps = notificationService;
42 private final StatisticsUpdateCommiter updateCommiter = new StatisticsUpdateCommiter(StatisticsProvider.this);
44 private Registration<NotificationListener> listenerRegistration;
48 NotificationProviderService nps = this.getNotificationService();
49 Registration<NotificationListener> registerNotificationListener = nps.registerNotificationListener(this.updateCommiter);
50 this.listenerRegistration = registerNotificationListener;
52 // Get Group/Meter statistics service instance
53 groupStatsService = StatisticsManagerActivator.getProviderContext().getRpcService(OpendaylightGroupStatisticsService.class);
55 meterStatsService = StatisticsManagerActivator.getProviderContext().getRpcService(OpendaylightMeterStatisticsService.class);
57 spLogger.info("Statistics Provider started.");
60 protected DataModificationTransaction startChange() {
62 DataProviderService dps = this.getDataService();
63 return dps.beginTransaction();
70 spLogger.info("Statistics Provider stopped.");
71 if (this.listenerRegistration != null) {
73 this.listenerRegistration.close();
76 } catch (Throwable e) {
77 throw Exceptions.sneakyThrow(e);