From 39e9eb74c011ee5351ac1796e5df529a70aa8945 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 26 May 2008 23:08:31 +0000 Subject: new option: "sim.message.prob.mean" new brainstorm. --- sources/core/VSProcess.java | 6 ++++-- sources/prefs/VSDefaultPrefs.java | 5 +++-- sources/simulator/VSSimulatorCanvas.java | 8 +++++++- 3 files changed, 14 insertions(+), 5 deletions(-) (limited to 'sources') diff --git a/sources/core/VSProcess.java b/sources/core/VSProcess.java index 03b980f..1a7f319 100644 --- a/sources/core/VSProcess.java +++ b/sources/core/VSProcess.java @@ -584,9 +584,11 @@ public class VSProcess extends VSPrefs { * * @return the a random message outage time */ - public synchronized long getARandomMessageOutageTime(final long durationTime) { + public synchronized long getARandomMessageOutageTime(final long durationTime, VSProcess receiverProcess) { + int percentage = (int) ((getInteger("message.prob.outage") + + receiverProcess.getInteger("message.prob.outage")) / 2); /* Check if the message will have an outage or not */ - if (random.nextInt(100) < getInteger("message.prob.outage")) { + if (getRandomPercentage() <= percentage) { /* Calculate the random outage time! */ final long outageTime = globalTime + random.nextLong(durationTime+1) % simulationCanvas.getUntilTime(); return outageTime; diff --git a/sources/prefs/VSDefaultPrefs.java b/sources/prefs/VSDefaultPrefs.java index 1a25409..0de1680 100644 --- a/sources/prefs/VSDefaultPrefs.java +++ b/sources/prefs/VSDefaultPrefs.java @@ -193,7 +193,7 @@ public class VSDefaultPrefs extends VSPrefs { public void fillDefaultFloats() { /* Simulation prefs */ initFloat("process.clock.variance", 0, "Uhrabweichung"); - initFloat("sim.clock.speed", 0.5f, "Simulationsgeschwindigkeit"); + initFloat("sim.clock.speed", 0.5f, "Abspielgeschwindigkeit der Simulation"); } /** @@ -230,6 +230,7 @@ public class VSDefaultPrefs extends VSPrefs { public void fillDefaultBooleans() { //initBoolean("message.broadcast", false, "Nachrichten sind immer Broadcasts"); initBoolean("sim.mode.expert", false, "Expertenmodus aktivieren"); - initBoolean("sim.message.own.recv", false, "Eigene Nachrichten empfangen"); + initBoolean("sim.message.own.recv", false, "Prozesse empfangen eig. Nachrichten"); + initBoolean("sim.message.prob.mean", true, "Mittelwerte der Nachrichtausfallw'k. bilden"); } } diff --git a/sources/simulator/VSSimulatorCanvas.java b/sources/simulator/VSSimulatorCanvas.java index f4e2044..33a5f18 100644 --- a/sources/simulator/VSSimulatorCanvas.java +++ b/sources/simulator/VSSimulatorCanvas.java @@ -1051,7 +1051,13 @@ public class VSSimulatorCanvas extends Canvas implements Runnable, MouseMotionLi } else { durationTime = sendingProcess.getDurationTime(); deliverTime = sendingProcess.getGlobalTime() + durationTime; - outageTime = sendingProcess.getARandomMessageOutageTime(durationTime); + + if (prefs.getBoolean("sim.message.prob.mean")) + outageTime = sendingProcess.getARandomMessageOutageTime( + durationTime, receiverProcess); + else + outageTime = sendingProcess.getARandomMessageOutageTime( + durationTime, null); /* Only add a 'receiving message' task if the message will not get lost! */ if (outageTime == -1) { -- cgit v1.2.3