X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=simple-client%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowjava%2Fprotocol%2Fimpl%2Fclients%2FScenarioHandler.java;h=57865d88601b10b333e51c538c7a83cc08746ee5;hb=272138f7081efbd9796a2a661c92c88727935235;hp=29244dba6484d8b34ae9d564f9010d05d6711d86;hpb=7c86aed239dce0513fda70c0e4d464e2f2e94742;p=openflowjava.git diff --git a/simple-client/src/main/java/org/opendaylight/openflowjava/protocol/impl/clients/ScenarioHandler.java b/simple-client/src/main/java/org/opendaylight/openflowjava/protocol/impl/clients/ScenarioHandler.java index 29244dba..57865d88 100644 --- a/simple-client/src/main/java/org/opendaylight/openflowjava/protocol/impl/clients/ScenarioHandler.java +++ b/simple-client/src/main/java/org/opendaylight/openflowjava/protocol/impl/clients/ScenarioHandler.java @@ -1,9 +1,16 @@ -/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */ +/* + * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * 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.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; @@ -12,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 scenario; + private Deque scenario; private BlockingQueue ofMsg; private ChannelHandlerContext ctx; private int eventNumber; + private boolean scenarioFinished = false; /** - * + * * @param scenario */ - public ScenarioHandler(Stack scenario) { + public ScenarioHandler(Deque scenario) { this.scenario = scenario; ofMsg = new LinkedBlockingQueue<>(); } @@ -37,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 { @@ -54,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 { @@ -70,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 */ @@ -86,14 +95,14 @@ public class ScenarioHandler extends Thread { /** * @return scenario */ - public Stack getScenario() { + public Deque getScenario() { return scenario; } /** * @param scenario scenario filled with desired events */ - public void setScenario(Stack scenario) { + public void setScenario(Deque scenario) { this.scenario = scenario; } @@ -110,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; + } }