summaryrefslogtreecommitdiff
path: root/src/main/java/simulator/engine/AbstractSimulationEngine.java
diff options
context:
space:
mode:
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;