Support for Table Features
[openflowplugin.git] / applications / forwardingrules-manager / src / main / java / org / opendaylight / openflowplugin / applications / frm / impl / ForwardingRulesManagerImpl.java
index 2e78b5e4ec04a693a964d299556037ead8711c7a..fa4c24009aeb43e42b05c22a4b22fdae139c0e06 100644 (file)
@@ -26,6 +26,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalF
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.SalGroupService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.SalMeterService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.SalTableService;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -55,10 +57,12 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager {
     private final SalFlowService salFlowService;
     private final SalGroupService salGroupService;
     private final SalMeterService salMeterService;
+    private final SalTableService salTableService;
 
     private ForwardingRulesCommiter<Flow> flowListener;
     private ForwardingRulesCommiter<Group> groupListener;
     private ForwardingRulesCommiter<Meter> meterListener;
+    private ForwardingRulesCommiter<Table> tableListener;
     private FlowNodeReconciliation nodeListener;
 
     public ForwardingRulesManagerImpl(final DataBroker dataBroker,
@@ -73,15 +77,22 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager {
                 "RPC SalGroupService not found.");
         this.salMeterService = Preconditions.checkNotNull(rpcRegistry.getRpcService(SalMeterService.class),
                 "RPC SalMeterService not found.");
+        this.salTableService = Preconditions.checkNotNull(rpcRegistry.getRpcService(SalTableService.class),
+                "RPC SalTableService not found.");
     }
 
     @Override
     public void start() {
+
         this.flowListener = new FlowForwarder(this, dataService);
+        
         this.groupListener = new GroupForwarder(this, dataService);
         this.meterListener = new MeterForwarder(this, dataService);
+        
+        this.tableListener = new TableForwarder(this, dataService);
         this.nodeListener = new FlowNodeReconciliationImpl(this, dataService);
         LOG.info("ForwardingRulesManager has started successfully.");
+
     }
 
     @Override
@@ -98,6 +109,10 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager {
             this.meterListener.close();
             this.meterListener = null;
         }
+        if (this.tableListener != null) {
+            this.tableListener.close();
+            this.tableListener = null;
+        }
         if (this.nodeListener != null) {
             this.nodeListener.close();
             this.nodeListener = null;
@@ -162,6 +177,11 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager {
         return salMeterService;
     }
 
+    @Override
+    public SalTableService getSalTableService() {
+        return salTableService;
+    }
+
     @Override
     public ForwardingRulesCommiter<Flow> getFlowCommiter() {
         return flowListener;
@@ -177,6 +197,11 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager {
         return meterListener;
     }
 
+    @Override
+    public ForwardingRulesCommiter<Table> getTableCommiter() {
+        return tableListener;
+    }
+
     @Override
     public FlowNodeReconciliation getFlowNodeReconciliation() {
         return nodeListener;