Skip to content

Commit b6b172e

Browse files
committed
chg: replace countdown table with PeriodicClockListeners.
1 parent b6dbff0 commit b6b172e

File tree

1 file changed

+5
-15
lines changed

1 file changed

+5
-15
lines changed

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

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
package io.jbotsim.core;
2222

2323
import io.jbotsim.core.event.ClockListener;
24+
import io.jbotsim.core.event.PeriodicClockListener;
2425

2526
import java.lang.reflect.Constructor;
2627
import java.util.ArrayList;
@@ -32,8 +33,7 @@
3233
*/
3334
public class ClockManager {
3435
Topology tp;
35-
HashMap<ClockListener, Integer> listeners = new HashMap<>();
36-
HashMap<ClockListener, Integer> countdown = new HashMap<>();
36+
HashMap<ClockListener, ClockListener> listeners = new HashMap<>();
3737
Class<? extends Clock> clockModel = null;
3838
Clock clock = null;
3939
Integer time = 0;
@@ -45,14 +45,7 @@ public class ClockManager {
4545
}
4646

4747
public void onClock() {
48-
List<ClockListener> expiredListeners = new ArrayList<>();
49-
for (ClockListener cl : listeners.keySet()) {
50-
countdown.put(cl, countdown.get(cl) - 1);
51-
if (countdown.get(cl) == 0) {
52-
expiredListeners.add(cl);
53-
countdown.put(cl, listeners.get(cl));
54-
}
55-
}
48+
List<ClockListener> expiredListeners = new ArrayList<>(listeners.values());
5649
tp.getScheduler().onClock(tp, expiredListeners);
5750
time++;
5851
}
@@ -90,8 +83,7 @@ public void setClockModel(Class<? extends Clock> clockModel) {
9083
* in time units.
9184
*/
9285
public void addClockListener(ClockListener listener, int period) {
93-
listeners.put(listener, period);
94-
countdown.put(listener, period);
86+
listeners.put(listener, new PeriodicClockListener(tp, listener, period));
9587
}
9688

9789
/**
@@ -100,8 +92,7 @@ public void addClockListener(ClockListener listener, int period) {
10092
* @param listener The listener to register.
10193
*/
10294
public void addClockListener(ClockListener listener) {
103-
listeners.put(listener, 1);
104-
countdown.put(listener, 1);
95+
listeners.put(listener, listener);
10596
}
10697

10798
/**
@@ -112,7 +103,6 @@ public void addClockListener(ClockListener listener) {
112103
*/
113104
public void removeClockListener(ClockListener listener) {
114105
listeners.remove(listener);
115-
countdown.remove(listener);
116106
}
117107

118108
/**

0 commit comments

Comments
 (0)