summaryrefslogtreecommitdiff
path: root/src/main/java/simulator/engine/AbstractSimulationEngine.java
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-06-21 21:27:31 +0300
committerPaul Buetow <paul@buetow.org>2025-06-21 21:27:31 +0300
commit0841f0f9a1e3f3708d8c511a6290344e73607aab (patch)
tree4ae7fe60878b693d6975093acb491d977d247acd /src/main/java/simulator/engine/AbstractSimulationEngine.java
parentce82046a11521b0537ac2150a07a4de54aec883a (diff)
Move test scripts to scripts/ directory and fix simulation completion
- Moved test-protocols.sh, test-quick.sh, test-verbose.sh to scripts/ - Updated references in README.md and docs/testing-guide.md - Fixed HeadlessSimulationRunner to properly run simulations to completion - Fixed message delivery timing (now respects 500-2000ms delays) - Added proper process time synchronization - Fixed HeadlessProtocolRunner to exit cleanly 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Diffstat (limited to 'src/main/java/simulator/engine/AbstractSimulationEngine.java')
-rw-r--r--src/main/java/simulator/engine/AbstractSimulationEngine.java21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/main/java/simulator/engine/AbstractSimulationEngine.java b/src/main/java/simulator/engine/AbstractSimulationEngine.java
index 21be5c7..45b2522 100644
--- a/src/main/java/simulator/engine/AbstractSimulationEngine.java
+++ b/src/main/java/simulator/engine/AbstractSimulationEngine.java
@@ -16,7 +16,7 @@ public abstract class AbstractSimulationEngine implements SimulationEngine {
protected final VSPrefs prefs;
protected final List<VSInternalProcess> processes;
protected final List<SimulationVisualizer> visualizers;
- protected final VSTaskManager taskManager;
+ protected VSTaskManager taskManager;
protected VSLogging loging;
protected long time;
@@ -38,19 +38,16 @@ public abstract class AbstractSimulationEngine implements SimulationEngine {
@Override
public void sendMessage(VSMessage message) {
+ // Calculate proper delivery time
+ long deliveryTime = calculateDeliveryTime(message);
+
// Schedule message delivery to all processes (broadcast model)
- scheduleMessageDelivery(message, time);
+ scheduleMessageDelivery(message, deliveryTime);
// Notify visualizers
for (SimulationVisualizer visualizer : visualizers) {
visualizer.onMessageSent(message);
}
-
- // Log the message
- if (loging != null) {
- loging.log("Message sent; ID: " + message.getMessageID() +
- "; Protocol: " + message.getName());
- }
}
protected abstract long calculateDeliveryTime(VSMessage message);
@@ -100,6 +97,14 @@ public abstract class AbstractSimulationEngine implements SimulationEngine {
return taskManager;
}
+ /**
+ * Set the task manager for this engine.
+ * Used when integrating with existing simulation infrastructure.
+ */
+ public void setTaskManager(VSTaskManager taskManager) {
+ this.taskManager = taskManager;
+ }
+
@Override
public long getTime() {
return time;