summaryrefslogtreecommitdiff
path: root/sources/core/VSProcess.java
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-05-24 21:06:15 +0000
committerPaul Buetow <paul@buetow.org>2008-05-24 21:06:15 +0000
commit222d028fac58233a451e2de875353252a3dc9f63 (patch)
tree292394f179db68464d9554b71a7ec05368867e33 /sources/core/VSProcess.java
parent61e38d3236ead0b32f8fa1a78901e9d0c75c91ea (diff)
PRocesses now get removed properly.
Removed all VSSimulation* classes.
Diffstat (limited to 'sources/core/VSProcess.java')
-rw-r--r--sources/core/VSProcess.java33
1 files changed, 27 insertions, 6 deletions
diff --git a/sources/core/VSProcess.java b/sources/core/VSProcess.java
index e5e8c9d..5612d89 100644
--- a/sources/core/VSProcess.java
+++ b/sources/core/VSProcess.java
@@ -22,7 +22,7 @@ public class VSProcess extends VSPrefs {
private VSLogging logging;
private VSPrefs prefs;
private VSRandom random;
- private VSSimulationCanvas simulationCanvas;
+ private VSSimulatorCanvas simulationCanvas;
private VSTask randomCrashTask;
private VSVectorTime vectorTime;
private boolean hasCrashed;
@@ -33,7 +33,8 @@ public class VSProcess extends VSPrefs {
private boolean timeModified;
private double clockOffset;
private float clockVariance;
- private int processID;
+ private int processID; // Represents the PID of a process
+ private int processNum; // Represents the array index of the process, for internal usage
private long globalTime;
private long lamportTime;
private long localTime;
@@ -84,8 +85,9 @@ public class VSProcess extends VSPrefs {
private static final String DEFAULT_STRING_VALUE_KEYS[] = {
};
- public VSProcess(VSPrefs prefs, VSSimulationCanvas simulationCanvas, VSLogging logging) {
+ public VSProcess(VSPrefs prefs, int processNum, VSSimulatorCanvas simulationCanvas, VSLogging logging) {
this.protocolsToReset = new ArrayList<VSProtocol>();
+ this.processNum = processNum;
this.prefs = prefs;
this.simulationCanvas = simulationCanvas;
this.logging = logging;
@@ -257,6 +259,10 @@ public class VSProcess extends VSPrefs {
return processID;
}
+ public synchronized int getProcessNum() {
+ return processNum;
+ }
+
public synchronized void setProcessID(int processID) {
this.processID = processID;
}
@@ -418,7 +424,7 @@ public class VSProcess extends VSPrefs {
}
public synchronized void increaseVectorTime() {
- vectorTime.set(processID-1, new Long(vectorTime.get(processID-1).longValue()+1));
+ vectorTime.set(processNum, new Long(vectorTime.get(processNum).longValue()+1));
vectorTime.setGlobalTime(globalTime);
vectorTimeHistory.add(vectorTime.getCopy());
}
@@ -427,7 +433,7 @@ public class VSProcess extends VSPrefs {
final int size = vectorTime.size();
for (int i = 0; i < size; ++i) {
- if (i == processID-1)
+ if (i == processNum)
vectorTime.set(i, new Long(vectorTime.get(i).longValue()+1));
else if (vectorTimeUpdate.get(i) > vectorTime.get(i))
vectorTime.set(i, vectorTimeUpdate.get(i));
@@ -518,7 +524,7 @@ public class VSProcess extends VSPrefs {
return process.getProcessID() == processID;
}
- public VSSimulationCanvas getSimulationCanvas() {
+ public VSSimulatorCanvas getSimulationCanvas() {
return simulationCanvas;
}
@@ -530,6 +536,21 @@ public class VSProcess extends VSPrefs {
processCounter = 0;
}
+ public void removeProcessAtIndex(int index) {
+ if (index < processNum)
+ --processNum;
+
+ vectorTime.remove(index);
+ for (VSVectorTime vectorTime : vectorTimeHistory)
+ vectorTime.remove(index);
+ }
+
+ public void addedAProcess() {
+ vectorTime.add(new Long(0));
+ for (VSVectorTime vectorTime : vectorTimeHistory)
+ vectorTime.add(new Long(0));
+ }
+
public VSProtocol getProtocolObject(String protocolClassname) {
VSProtocol protocol = null;