Skip to content

Commit b0c876c

Browse files
committed
Chg: #85 - move message delivery notification into Topology.notifyMessageDelivered(Message) + protect list from concurrent access
1 parent 30d553a commit b0c876c

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

lib/jbotsim-core/src/main/java/io/jbotsim/core/DefaultMessageEngine.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,7 @@ protected void deliverMessages(Collection<Message> messagesToSend) {
219219
protected void deliverMessage(Message message) {
220220
message.getDestination().getMailbox().add(message);
221221
message.getDestination().onMessage(message);
222-
for (MessageListener ml : topology.messageListeners)
223-
ml.onMessage(message);
222+
topology.notifyMessageDelivered(message);
224223
if (debug)
225224
System.err.println(topology.getTime() + ": " + message);
226225
}

lib/jbotsim-core/src/main/java/io/jbotsim/core/Topology.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,6 +1113,11 @@ protected void notifyNodeSelected(Node node) {
11131113
tl.onSelection(node);
11141114
}
11151115

1116+
protected void notifyMessageDelivered(Message message) {
1117+
for (MessageListener listener : new ArrayList<>(messageListeners))
1118+
listener.onMessage(message);
1119+
}
1120+
11161121
@Override
11171122
public void onClock() {
11181123
if (step) {

0 commit comments

Comments
 (0)