Fix Logger use
[openflowjava.git] / simple-client / src / main / java / org / opendaylight / openflowjava / protocol / impl / clients / ScenarioHandler.java
index 24f90c9df6f54ed465bd2a7567c75ebbd993d5eb..57865d88601b10b333e51c538c7a83cc08746ee5 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.openflowjava.protocol.impl.clients;
 
 import io.netty.channel.ChannelHandlerContext;
 
-import java.util.Stack;
+import java.util.Deque;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
@@ -19,23 +19,24 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * 
+ *
  * @author michal.polkorab
  *
  */
 public class ScenarioHandler extends Thread {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ScenarioHandler.class);
-    private Stack<ClientEvent> scenario;
+    private Deque<ClientEvent> scenario;
     private BlockingQueue<byte[]> ofMsg;
     private ChannelHandlerContext ctx;
     private int eventNumber;
+    private boolean scenarioFinished = false;
 
     /**
-     * 
+     *
      * @param scenario
      */
-    public ScenarioHandler(Stack<ClientEvent> scenario) {
+    public ScenarioHandler(Deque<ClientEvent> scenario) {
         this.scenario = scenario;
         ofMsg = new LinkedBlockingQueue<>();
     }
@@ -44,8 +45,8 @@ public class ScenarioHandler extends Thread {
     public void run() {
         int freezeCounter = 0;
         while (!scenario.isEmpty()) {
-            LOGGER.debug("Running event #" + eventNumber);
-            ClientEvent peek = scenario.peek();
+            LOGGER.debug("Running event #{}", eventNumber);
+            ClientEvent peek = scenario.peekLast();
             if (peek instanceof WaitForMessageEvent) {
                 LOGGER.debug("WaitForMessageEvent");
                 try {
@@ -61,14 +62,14 @@ public class ScenarioHandler extends Thread {
                 event.setCtx(ctx);
             }
             if (peek.eventExecuted()) {
-                scenario.pop();
+                scenario.removeLast();
                 eventNumber++;
                 freezeCounter = 0;
             } else {
                 freezeCounter++;
             }
             if (freezeCounter > 2) {
-                LOGGER.warn("Scenario freezed: " + freezeCounter);
+                LOGGER.warn("Scenario frozen: {}", freezeCounter);
                 break;
             }
             try {
@@ -77,12 +78,13 @@ public class ScenarioHandler extends Thread {
                 LOGGER.error(e.getMessage(), e);
             }
         }
-        LOGGER.info("Scenario finished");
+        LOGGER.debug("Scenario finished");
         synchronized (this) {
+            scenarioFinished = true;
             this.notify();
         }
     }
-    
+
     /**
      * @return true if scenario is done / empty
      */
@@ -93,14 +95,14 @@ public class ScenarioHandler extends Thread {
     /**
      * @return scenario
      */
-    public Stack<ClientEvent> getScenario() {
+    public Deque<ClientEvent> getScenario() {
         return scenario;
     }
 
     /**
      * @param scenario scenario filled with desired events
      */
-    public void setScenario(Stack<ClientEvent> scenario) {
+    public void setScenario(Deque<ClientEvent> scenario) {
         this.scenario = scenario;
     }
 
@@ -117,4 +119,11 @@ public class ScenarioHandler extends Thread {
     public void addOfMsg(byte[] message) {
         ofMsg.add(message);
     }
+
+    /**
+     * @return true is scenario is finished
+     */
+    public boolean isScenarioFinished() {
+        return scenarioFinished;
+    }
 }