From 36f74586cc61f5899c16b6f84a04be37688cc719 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 18 May 2008 23:20:08 +0000 Subject: TaskManager bugfixes. --- sources/core/VSProcess.java | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) (limited to 'sources/core/VSProcess.java') diff --git a/sources/core/VSProcess.java b/sources/core/VSProcess.java index 467ee46..d2fe934 100644 --- a/sources/core/VSProcess.java +++ b/sources/core/VSProcess.java @@ -12,6 +12,7 @@ import simulator.*; import utils.*; public final class VSProcess extends VSPrefs { + private ArrayList protocolsToReset; private ArrayList crashHistory; private ArrayList lamportTimeHistory; private ArrayList vectorTimeHistory; @@ -84,13 +85,13 @@ public final class VSProcess extends VSPrefs { }; public VSProcess(VSPrefs prefs, VSSimulationPanel simulationPanel, VSLogging logging) { + this.protocolsToReset = new ArrayList(); this.prefs = prefs; this.simulationPanel = simulationPanel; this.logging = logging; random = new VSRandom(processID+processCounter); initTimeFormats(); - setObject("protocols", new ArrayList()); isPaused = true; processID = ++processCounter; @@ -208,14 +209,8 @@ public final class VSProcess extends VSPrefs { globalTime = 0; clockOffset = 0; - if (objectExists("protocols.registered")) { - Object protocolsObj = getObject("protocols.registered"); - if (protocolsObj instanceof Vector) { - Vector protocols = (Vector) protocolsObj; - for (VSProtocol protocol : protocols) - protocol.reset(); - } - } + for (VSProtocol protocol : protocolsToReset) + protocol.reset(); setCurrentColor(getColor("process.default")); createRandomCrashTask(); @@ -542,4 +537,19 @@ public final class VSProcess extends VSPrefs { public static void resetProcessCounter() { processCounter = 0; } + + public VSProtocol getProtocolObject(String protocolClassname) { + VSProtocol protocol = null; + + if (!objectExists(protocolClassname)) { + protocol = (VSProtocol) VSRegisteredEvents.createEventInstanceByClassname(protocolClassname, this); + setObject(protocolClassname, protocol); + protocolsToReset.add(protocol); + + } else { + protocol = (VSProtocol) getObject(protocolClassname); + } + + return protocol; + } } -- cgit v1.2.3