From e4c3ac81255a1efcf39530ebfb22e91f34f7145f Mon Sep 17 00:00:00 2001 From: fros4943 Date: Fri, 26 Mar 2010 09:12:20 +0000 Subject: [PATCH] synchronizing access to log list --- .../java/se/sics/cooja/SimEventCentral.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/tools/cooja/java/se/sics/cooja/SimEventCentral.java b/tools/cooja/java/se/sics/cooja/SimEventCentral.java index 92d46247d..9b2ff72b2 100644 --- a/tools/cooja/java/se/sics/cooja/SimEventCentral.java +++ b/tools/cooja/java/se/sics/cooja/SimEventCentral.java @@ -24,7 +24,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: SimEventCentral.java,v 1.3 2009/12/07 11:06:08 fros4943 Exp $ + * $Id: SimEventCentral.java,v 1.4 2010/03/26 09:12:20 fros4943 Exp $ */ package se.sics.cooja; @@ -217,7 +217,10 @@ public class SimEventCentral { /* We may have to remove some events now */ while (logOutputEvents.size() > logOutputBufferSize-1) { - LogOutputEvent removed = logOutputEvents.pollFirst(); + LogOutputEvent removed; + synchronized (logOutputEvents) { + removed = logOutputEvents.pollFirst(); + } if (removed == null) { break; } @@ -225,11 +228,12 @@ public class SimEventCentral { l.removedLogOutput(removed); } } - + /* Store log output, and notify listeners */ - LogOutputEvent ev = - new LogOutputEvent(mote, simulation.getSimulationTime(), msg); - logOutputEvents.add(ev); + LogOutputEvent ev = new LogOutputEvent(mote, simulation.getSimulationTime(), msg); + synchronized (logOutputEvents) { + logOutputEvents.add(ev); + } for (LogOutputListener l: logOutputListeners) { l.newLogOutput(ev); } @@ -269,8 +273,11 @@ public class SimEventCentral { logOutputEvents.clear(); } } + public LogOutputEvent[] getLogOutputHistory() { - return logOutputEvents.toArray(new LogOutputEvent[0]); + synchronized (logOutputEvents) { + return logOutputEvents.toArray(new LogOutputEvent[0]); + } } public int getLogOutputBufferSize() { return logOutputBufferSize;