Use Uint types in loopremover 40/110240/4
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 14 Feb 2024 20:44:11 +0000 (21:44 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 14 Feb 2024 21:19:28 +0000 (22:19 +0100)
We have unnecessary round-trip through widened types, eliminate it in
favor of using Uint8/Uint16.

Change-Id: Ieac36c87921b93900cf8bceeca8dd7b6c4b4463d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
loopremover/implementation/src/main/java/org/opendaylight/l2switch/loopremover/LoopRemoverProvider.java
loopremover/implementation/src/main/java/org/opendaylight/l2switch/loopremover/flow/InitialFlowWriter.java

index e5feb49afa49034e3a5aedc97b4c1d3539795e10..1a6ff2caa54bd60016c59f8941b7a5180e967076 100644 (file)
@@ -41,10 +41,10 @@ public class LoopRemoverProvider {
         if (loopRemoverConfig.getIsInstallLldpFlow()) {
             LOG.info("LoopRemover will install an lldp flow");
             InitialFlowWriter initialFlowWriter = new InitialFlowWriter(salFlowService);
-            initialFlowWriter.setFlowTableId(loopRemoverConfig.getLldpFlowTableId().toJava());
-            initialFlowWriter.setFlowPriority(loopRemoverConfig.getLldpFlowPriority().toJava());
-            initialFlowWriter.setFlowIdleTimeout(loopRemoverConfig.getLldpFlowIdleTimeout().toJava());
-            initialFlowWriter.setFlowHardTimeout(loopRemoverConfig.getLldpFlowHardTimeout().toJava());
+            initialFlowWriter.setFlowTableId(loopRemoverConfig.getLldpFlowTableId());
+            initialFlowWriter.setFlowPriority(loopRemoverConfig.getLldpFlowPriority());
+            initialFlowWriter.setFlowIdleTimeout(loopRemoverConfig.getLldpFlowIdleTimeout());
+            initialFlowWriter.setFlowHardTimeout(loopRemoverConfig.getLldpFlowHardTimeout());
             topoNodeListnerReg = initialFlowWriter.registerAsDataChangeListener(dataService);
         }
 
index cfc21841d1209e023a83539cabf360fa8e7c7c1b..cc8f267a949bd7865ddde941a906a1ab9713f658 100644 (file)
@@ -5,11 +5,11 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.l2switch.loopremover.flow;
 
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.collect.ImmutableList;
-import java.math.BigInteger;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
@@ -62,6 +62,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.Uint64;
+import org.opendaylight.yangtools.yang.common.Uint8;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -73,37 +77,36 @@ public class InitialFlowWriter implements DataTreeChangeListener<Node> {
     private static final Logger LOG = LoggerFactory.getLogger(InitialFlowWriter.class);
 
     private static final String FLOW_ID_PREFIX = "L2switch-";
-    private static  final int LLDP_ETHER_TYPE = 35020;
+    private static final Uint32 LLDP_ETHER_TYPE = Uint32.valueOf(35020);
 
     private final ExecutorService initialFlowExecutor = Executors.newCachedThreadPool();
     private final SalFlowService salFlowService;
-    private short flowTableId;
-    private int flowPriority;
-    private int flowIdleTimeout;
-    private int flowHardTimeout;
+    private Uint8 flowTableId = Uint8.ZERO;
+    private Uint16 flowPriority = Uint16.ZERO;
+    private Uint16 flowIdleTimeout = Uint16.ZERO;
+    private Uint16 flowHardTimeout = Uint16.ZERO;
 
     private final AtomicLong flowIdInc = new AtomicLong();
     private final AtomicLong flowCookieInc = new AtomicLong(0x2b00000000000000L);
 
-
     public InitialFlowWriter(SalFlowService salFlowService) {
-        this.salFlowService = salFlowService;
+        this.salFlowService = requireNonNull(salFlowService);
     }
 
-    public void setFlowTableId(short flowTableId) {
-        this.flowTableId = flowTableId;
+    public void setFlowTableId(Uint8 flowTableId) {
+        this.flowTableId = requireNonNull(flowTableId);
     }
 
-    public void setFlowPriority(int flowPriority) {
-        this.flowPriority = flowPriority;
+    public void setFlowPriority(Uint16 flowPriority) {
+        this.flowPriority = requireNonNull(flowPriority);
     }
 
-    public void setFlowIdleTimeout(int flowIdleTimeout) {
-        this.flowIdleTimeout = flowIdleTimeout;
+    public void setFlowIdleTimeout(Uint16 flowIdleTimeout) {
+        this.flowIdleTimeout = requireNonNull(flowIdleTimeout);
     }
 
-    public void setFlowHardTimeout(int flowHardTimeout) {
-        this.flowHardTimeout = flowHardTimeout;
+    public void setFlowHardTimeout(Uint16 flowHardTimeout) {
+        this.flowHardTimeout = requireNonNull(flowHardTimeout);
     }
 
     public ListenerRegistration<InitialFlowWriter> registerAsDataChangeListener(DataBroker dataBroker) {
@@ -197,7 +200,7 @@ public class InitialFlowWriter implements DataTreeChangeListener<Node> {
             return tableId.child(Flow.class, flowKey);
         }
 
-        private Flow createLldpToControllerFlow(Short tableId, int priority) {
+        private Flow createLldpToControllerFlow(Uint8 tableId, Uint16 priority) {
 
             // start building flow
             FlowBuilder lldpFlow = new FlowBuilder()
@@ -208,7 +211,7 @@ public class InitialFlowWriter implements DataTreeChangeListener<Node> {
             lldpFlow.setId(new FlowId(Long.toString(lldpFlow.hashCode())));
             EthernetMatchBuilder ethernetMatchBuilder = new EthernetMatchBuilder()
                     .setEthernetType(new EthernetTypeBuilder()
-                            .setType(new EtherType(Long.valueOf(LLDP_ETHER_TYPE))).build());
+                            .setType(new EtherType(LLDP_ETHER_TYPE)).build());
 
             Match match = new MatchBuilder()
                     .setEthernetMatch(ethernetMatchBuilder.build())
@@ -236,7 +239,7 @@ public class InitialFlowWriter implements DataTreeChangeListener<Node> {
                     .setBufferId(OFConstants.OFP_NO_BUFFER)
                     .setHardTimeout(flowHardTimeout)
                     .setIdleTimeout(flowIdleTimeout)
-                    .setCookie(new FlowCookie(BigInteger.valueOf(flowCookieInc.getAndIncrement())))
+                    .setCookie(new FlowCookie(Uint64.fromLongBits(flowCookieInc.getAndIncrement())))
                     .setFlags(new FlowModFlags(false, false, false, false, false));
 
             return lldpFlow.build();
@@ -248,7 +251,7 @@ public class InitialFlowWriter implements DataTreeChangeListener<Node> {
                     .withKey(new ActionKey(0))
                     .setAction(new OutputActionCaseBuilder()
                             .setOutputAction(new OutputActionBuilder()
-                                    .setMaxLength(0xffff)
+                                    .setMaxLength(Uint16.MAX_VALUE)
                                     .setOutputNodeConnector(new Uri(OutputPortValues.CONTROLLER.toString()))
                                     .build())
                             .build())