Merge "Move a Timer (scheduler) Submit Transaction from TxChain"
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / device / DeviceContextImpl.java
index 2cb7a22c5002569bd506531aa57538f53126d9ef..01227abbb4d5f966e5234e882878d9c097678b7f 100644 (file)
@@ -20,20 +20,18 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.No
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortReason;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortReason;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.SettableFuture;
 import io.netty.util.HashedWheelTimer;
 import io.netty.util.Timeout;
-import io.netty.util.TimerTask;
 import java.math.BigInteger;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
-import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 import javax.annotation.Nonnull;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -103,7 +101,7 @@ public class DeviceContextImpl implements DeviceContext {
         this.dataBroker = Preconditions.checkNotNull(dataBroker);
         this.hashedWheelTimer = Preconditions.checkNotNull(hashedWheelTimer);
         xidGenerator = new XidGenerator();
-        txChainManager = new TransactionChainManager(dataBroker, 500L);
+        txChainManager = new TransactionChainManager(dataBroker, hashedWheelTimer, 500L);
         auxiliaryConnectionContexts = new HashMap<>();
         requests = new HashMap<>();
         deviceFlowRegistry = new DeviceFlowRegistryImpl();
@@ -116,12 +114,6 @@ public class DeviceContextImpl implements DeviceContext {
     void submitTransaction() {
         txChainManager.submitTransaction();
         txChainManager.enableCounter();
-        hashedWheelTimer.newTimeout(new TimerTask() {
-            @Override
-            public void run(final Timeout timeout) throws Exception {
-                submitTransaction();
-            }
-        }, 0, TimeUnit.MILLISECONDS);
     }
 
     @Override
@@ -301,10 +293,10 @@ public class DeviceContextImpl implements DeviceContext {
 
         final KeyedInstanceIdentifier<NodeConnector, NodeConnectorKey> iiToNodeConnector =
                 provideIIToNodeConnector(portStatus.getPortNo(), portStatus.getVersion());
-        if (portStatus.getReason().equals(PortReason.Add) ) {
+        if (portStatus.getReason().equals(PortReason.OFPPRADD) ) {
             // because of ADD status node connector has to be created
             createNodeConnectorInDS(iiToNodeConnector);
-        } else if (portStatus.getReason().equals(PortReason.Delete) ) {
+        } else if (portStatus.getReason().equals(PortReason.OFPPRDELETE) ) {
             //only put operation over datastore is available. therefore delete is
             //inserting of empty FlowCapableNodeConnector
             flowCapableNodeConnector = new FlowCapableNodeConnectorBuilder().build();
@@ -336,7 +328,7 @@ public class DeviceContextImpl implements DeviceContext {
         final TranslatorKey translatorKey = new TranslatorKey(packetInMessage.getVersion(), PacketReceivedTranslator.class.getName());
         final MessageTranslator<PacketInMessage, PacketReceived> messageTranslator = translatorLibrary.lookupTranslator(translatorKey);
         final PacketReceived packetReceived = messageTranslator.translate(packetInMessage, this, null);
-        //TODO publish to MD-SAL
+        notificationService.publish(packetReceived);
     }
 
     @Override