diff options
| author | Paul Buetow <paul@buetow.org> | 2008-05-31 04:28:38 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-05-31 04:28:38 +0000 |
| commit | dda68e02570d7dbdc82ce56123ebb4da989acafe (patch) | |
| tree | feaade7155347fa73b817b2728974876cc6d02e5 /sources | |
| parent | 8b7220b414da44508d3806051c065066933f85d1 (diff) | |
yet another bugfix
Diffstat (limited to 'sources')
| -rw-r--r-- | sources/core/VSProcess.java | 6 | ||||
| -rw-r--r-- | sources/simulator/VSSimulatorCanvas.java | 35 |
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( |
