FRM performance refactoring:
[controller.git] / opendaylight / md-sal / forwardingrules-manager / src / main / java / org / opendaylight / controller / frm / FRMActivator.java
index c75c644c008dfe0aad4849a98a13a80f053a6e80..9878d16e57bca8450f6217455d58fa3ef2e0a33f 100644 (file)
@@ -7,10 +7,7 @@
  */
 package org.opendaylight.controller.frm;
 
-import org.opendaylight.controller.frm.flow.FlowProvider;
-import org.opendaylight.controller.frm.group.GroupProvider;
-import org.opendaylight.controller.frm.meter.MeterProvider;
-import org.opendaylight.controller.frm.reconil.FlowNodeReconcilProvider;
+import org.opendaylight.controller.frm.impl.ForwardingRulesManagerImpl;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.sal.binding.api.AbstractBindingAwareProvider;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
@@ -21,8 +18,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Forwarding Rules Manager Activator
  *
- * Activator manages all Providers ({@link FlowProvider}, {@link GroupProvider},
- * {@link MeterProvider} and the {@link FlowNodeReconcilProvider}).
+ * Activator {@link ForwardingRulesManager}.
  * It registers all listeners (DataChangeEvent, ReconcilNotification)
  * in the Session Initialization phase.
  *
@@ -33,56 +29,33 @@ public class FRMActivator extends AbstractBindingAwareProvider {
 
     private final static Logger LOG = LoggerFactory.getLogger(FRMActivator.class);
 
-    private final FlowProvider flowProvider;
-    private final GroupProvider groupProvider;
-    private final MeterProvider meterProvider;
-    private final FlowNodeReconcilProvider flowNodeReconcilProvider;
-
-    public FRMActivator() {
-        this.flowProvider = new FlowProvider();
-        this.groupProvider = new GroupProvider();
-        this.meterProvider = new MeterProvider();
-        this.flowNodeReconcilProvider = new FlowNodeReconcilProvider();
-    }
+    private ForwardingRulesManager  manager;
 
     @Override
-    public void onSessionInitiated(final ProviderContext session) {
+    public void onSessionInitiated(ProviderContext session) {
         LOG.info("FRMActivator initialization.");
-        /* Flow */
         try {
-            final DataBroker flowSalService = session.getSALService(DataBroker.class);
-            this.flowProvider.init(flowSalService);
-            this.flowProvider.start(session);
-            /* Group */
-            final DataBroker groupSalService = session.getSALService(DataBroker.class);
-            this.groupProvider.init(groupSalService);
-            this.groupProvider.start(session);
-            /* Meter */
-            final DataBroker meterSalService = session.getSALService(DataBroker.class);
-            this.meterProvider.init(meterSalService);
-            this.meterProvider.start(session);
-            /* FlowNode Reconciliation */
-            final DataBroker dbs = session.getSALService(DataBroker.class);
-            this.flowNodeReconcilProvider.init(dbs);
-            this.flowNodeReconcilProvider.start(session);
-
-            LOG.info("FRMActivator started successfully");
-        } catch (Exception e) {
-            String errMsg = "Unexpected error by starting FRMActivator";
-            LOG.error(errMsg, e);
-            throw new IllegalStateException(errMsg, e);
+            final DataBroker dataBroker = session.getSALService(DataBroker.class);
+            this.manager = new ForwardingRulesManagerImpl(dataBroker, session);
+            this.manager.start();
+            LOG.info("FRMActivator initialization successfull.");
+        }
+        catch (Exception e) {
+            LOG.error("Unexpected error by FRM initialization!", e);
+            this.stopImpl(null);
         }
     }
 
     @Override
     protected void stopImpl(final BundleContext context) {
-        try {
-            this.flowProvider.close();
-            this.groupProvider.close();
-            this.meterProvider.close();
-            this.flowNodeReconcilProvider.close();
-        } catch (Exception e) {
-            LOG.error("Unexpected error by stopping FRMActivator", e);
+        if (manager != null) {
+            try {
+                manager.close();
+            } catch (Exception e) {
+                LOG.error("Unexpected error by stopping FRMActivator", e);
+            }
+            manager = null;
+            LOG.info("FRMActivator stopped.");
         }
     }
   }
\ No newline at end of file