diff options
Diffstat (limited to 'src/main/java/simulator/messaging')
3 files changed, 110 insertions, 0 deletions
diff --git a/src/main/java/simulator/messaging/HeadlessMessageHandler.java b/src/main/java/simulator/messaging/HeadlessMessageHandler.java new file mode 100644 index 0000000..fc2916e --- /dev/null +++ b/src/main/java/simulator/messaging/HeadlessMessageHandler.java @@ -0,0 +1,39 @@ +package simulator.messaging; + +import core.VSMessage; +import simulator.engine.SimulationEngine; + +/** + * Headless implementation of MessageHandler that processes messages + * without any GUI visualization. + */ +public class HeadlessMessageHandler implements MessageHandler { + private final SimulationEngine engine; + private long networkDelay = 100; + private long networkVariability = 0; + + public HeadlessMessageHandler(SimulationEngine engine) { + this.engine = engine; + } + + @Override + public void handleMessage(VSMessage message) { + // Just send to engine, no visualization + engine.sendMessage(message); + } + + @Override + public void visualizeMessage(VSMessage message) { + // No-op in headless mode + } + + @Override + public void setNetworkDelay(long delay) { + this.networkDelay = delay; + } + + @Override + public void setNetworkVariability(long variability) { + this.networkVariability = variability; + } +}
\ No newline at end of file diff --git a/src/main/java/simulator/messaging/MessageHandler.java b/src/main/java/simulator/messaging/MessageHandler.java new file mode 100644 index 0000000..15856db --- /dev/null +++ b/src/main/java/simulator/messaging/MessageHandler.java @@ -0,0 +1,34 @@ +package simulator.messaging; + +import core.VSMessage; + +/** + * Interface for handling message delivery in the simulation. + * Implementations can choose to visualize messages or just deliver them. + */ +public interface MessageHandler { + + /** + * Handle a message that needs to be sent. + * @param message The message to handle + */ + void handleMessage(VSMessage message); + + /** + * Visualize a message being sent (optional operation). + * @param message The message to visualize + */ + void visualizeMessage(VSMessage message); + + /** + * Set the network delay for message delivery. + * @param delay Base delay in milliseconds + */ + void setNetworkDelay(long delay); + + /** + * Set the network delay variability. + * @param variability Variability in milliseconds + */ + void setNetworkVariability(long variability); +}
\ No newline at end of file diff --git a/src/main/java/simulator/messaging/VisualMessageHandler.java b/src/main/java/simulator/messaging/VisualMessageHandler.java new file mode 100644 index 0000000..514a4ee --- /dev/null +++ b/src/main/java/simulator/messaging/VisualMessageHandler.java @@ -0,0 +1,37 @@ +package simulator.messaging; + +import core.VSMessage; +import simulator.VSSimulatorVisualization; + +/** + * Visual implementation of MessageHandler that delegates to the + * existing VSSimulatorVisualization for backward compatibility. + */ +public class VisualMessageHandler implements MessageHandler { + private final VSSimulatorVisualization visualization; + + public VisualMessageHandler(VSSimulatorVisualization visualization) { + this.visualization = visualization; + } + + @Override + public void handleMessage(VSMessage message) { + // Delegate to existing visualization + visualization.sendMessage(message); + } + + @Override + public void visualizeMessage(VSMessage message) { + // Already handled by visualization.sendMessage() + } + + @Override + public void setNetworkDelay(long delay) { + // Handled by visualization preferences + } + + @Override + public void setNetworkVariability(long variability) { + // Handled by visualization preferences + } +}
\ No newline at end of file |
