summaryrefslogtreecommitdiff
path: root/sources/core/VSProcess.java
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-05-18 23:20:08 +0000
committerPaul Buetow <paul@buetow.org>2008-05-18 23:20:08 +0000
commit36f74586cc61f5899c16b6f84a04be37688cc719 (patch)
tree3ce0df2cf2dc18b2bdd27b546305c4a73598c457 /sources/core/VSProcess.java
parent34b16d2ffc7b40df933ba85ddb8e414121116ca5 (diff)
TaskManager bugfixes.
Diffstat (limited to 'sources/core/VSProcess.java')
-rw-r--r--sources/core/VSProcess.java28
1 files changed, 19 insertions, 9 deletions
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<VSProtocol> protocolsToReset;
private ArrayList<Long> crashHistory;
private ArrayList<VSLamportTime> lamportTimeHistory;
private ArrayList<VSVectorTime> vectorTimeHistory;
@@ -84,13 +85,13 @@ public final class VSProcess extends VSPrefs {
};
public VSProcess(VSPrefs prefs, VSSimulationPanel simulationPanel, VSLogging logging) {
+ this.protocolsToReset = new ArrayList<VSProtocol>();
this.prefs = prefs;
this.simulationPanel = simulationPanel;
this.logging = logging;
random = new VSRandom(processID+processCounter);
initTimeFormats();
- setObject("protocols", new ArrayList<VSProtocol>());
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<VSProtocol> protocols = (Vector<VSProtocol>) 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;
+ }
}