summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
Diffstat (limited to 'sources')
-rw-r--r--sources/core/VSProcess.java6
-rw-r--r--sources/simulator/VSSimulatorCanvas.java35
2 files changed, 24 insertions, 17 deletions
diff --git a/sources/core/VSProcess.java b/sources/core/VSProcess.java
index 0c9694e..31bbab6 100644
--- a/sources/core/VSProcess.java
+++ b/sources/core/VSProcess.java
@@ -88,9 +88,9 @@ public class VSProcess extends VSPrefs {
private VSVectorTime vectorTime;
/** The tasks of the process. DO ONLY MANIPULATE THIS OBJECT WITHIN THE
- * VSTaskManager CLASS! OTHERWISE THE SYNCHRONIZATION IS WRONG! Use the
- * VSProcess.getTasks() method to get a reference to this object within the
- * VSTaskManager! */
+ * VSTaskManager CLASS! OTHERWISE THE SYNCHRONIZATION IS WRONG! Use the
+ * VSProcess.getTasks() method to get a reference to this object within the
+ * VSTaskManager! */
private VSPriorityQueue<VSTask> tasks;
/** The process has crashed. But may be working again. */
diff --git a/sources/simulator/VSSimulatorCanvas.java b/sources/simulator/VSSimulatorCanvas.java
index c972570..0fb58ed 100644
--- a/sources/simulator/VSSimulatorCanvas.java
+++ b/sources/simulator/VSSimulatorCanvas.java
@@ -369,15 +369,7 @@ public class VSSimulatorCanvas extends Canvas implements Runnable {
g.drawLine((int) x1, (int) y1, (int) x, (int) y);
} else if (globalTime >= recvTime) {
- if (prefs.getBoolean("sim.messages.relevant")) {
- VSMessageReceiveEvent event =
- (VSMessageReceiveEvent) task.getEvent();
-
- event.init(receiverProcess);
- if (!event.isRelevantMessage())
- removeMessageLine(this);
- }
-
+ checkIfMessageIsRelevant();
isArrived = true;
if (receiverProcess.isCrashed())
@@ -388,6 +380,7 @@ public class VSSimulatorCanvas extends Canvas implements Runnable {
draw(g, globalTime);
} else if (outageTime >= 0 && outageTime <= globalTime) {
+ checkIfMessageIsRelevant();
isLost = true;
draw(g, globalTime);;
@@ -401,6 +394,20 @@ public class VSSimulatorCanvas extends Canvas implements Runnable {
}
/**
+ * Checks if the message is relevant. If it's not relevant, then it will
+ * get removed.
+ */
+ private void checkIfMessageIsRelevant() {
+ if (prefs.getBoolean("sim.messages.relevant")) {
+ VSMessageReceiveEvent event =
+ (VSMessageReceiveEvent) task.getEvent();
+ event.init(receiverProcess);
+ if (!event.isRelevantMessage())
+ removeMessageLine(this);
+ }
+ }
+
+ /**
* Called if a process within the simulator has been removed at a
* specified index.
*
@@ -1330,14 +1337,14 @@ public class VSSimulatorCanvas extends Canvas implements Runnable {
outageTime = sendingProcess.getARandomMessageOutageTime(
durationTime, null);
+ receiveEvent = new VSMessageReceiveEvent(message);
+ task = new VSTask(deliverTime, receiverProcess,
+ receiveEvent, VSTask.GLOBAL);
+
/* Only add a 'receiving message' task if the message will
not get lost! */
- if (outageTime == -1) {
- receiveEvent = new VSMessageReceiveEvent(message);
- task = new VSTask(deliverTime, receiverProcess,
- receiveEvent, VSTask.GLOBAL);
+ if (outageTime == -1)
taskManager.addTask(task);
- }
synchronized (messageLines) {
messageLines.add(