- private final DataBroker dataBroker;
- private ListenerRegistration<MeterForwarder> listenerRegistration;
-
- public MeterForwarder (final ForwardingRulesManager manager, final DataBroker db) {
- super(manager, Meter.class);
- dataBroker = Preconditions.checkNotNull(db, "DataBroker can not be null!");
- final DataTreeIdentifier<Meter> treeId = new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, getWildCardPath());
-
- try {
- SimpleTaskRetryLooper looper = new SimpleTaskRetryLooper(ForwardingRulesManagerImpl.STARTUP_LOOP_TICK,
- ForwardingRulesManagerImpl.STARTUP_LOOP_MAX_RETRIES);
- listenerRegistration = looper.loopUntilNoException(new Callable<ListenerRegistration<MeterForwarder>>() {
- @Override
- public ListenerRegistration<MeterForwarder> call() throws Exception {
- return db.registerDataTreeChangeListener(treeId, MeterForwarder.this);
- }
- });
- } catch (final Exception e) {
- LOG.warn("FRM Meter DataTreeChange listener registration fail!");
- LOG.debug("FRM Meter DataTreeChange listener registration fail ..", e);
- throw new IllegalStateException("MeterForwarder startup fail! System needs restart.", e);
- }
+
+ public MeterForwarder(final ForwardingRulesManager manager, final DataBroker db,
+ final ListenerRegistrationHelper listenerRegistrationHelper) {
+ super(manager, db, listenerRegistrationHelper);
+ }
+
+ @Override
+ public void deregisterListener() {
+ close();