Skip to content

Commit 383656d

Browse files
committed
chg: replace countdown table with PeriodicClockListeners.
1 parent 16d793d commit 383656d

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;
@@ -34,8 +35,7 @@ public class ClockManager {
3435
final static int CLOCK_INITIAL_VALUE = 0;
3536

3637
Topology tp;
37-
HashMap<ClockListener, Integer> listeners = new HashMap<>();
38-
HashMap<ClockListener, Integer> countdown = new HashMap<>();
38+
HashMap<ClockListener, ClockListener> listeners = new HashMap<>();
3939
Class<? extends Clock> clockModel = null;
4040
Clock clock = null;
4141
int time = CLOCK_INITIAL_VALUE;
@@ -65,14 +65,7 @@ private void incrementTime() {
6565
}
6666

6767
private void callScheduler() {
68-
List<ClockListener> expiredListeners = new ArrayList<>();
69-
for (ClockListener cl : listeners.keySet()) {
70-
countdown.put(cl, countdown.get(cl) - 1);
71-
if (countdown.get(cl) == 0) {
72-
expiredListeners.add(cl);
73-
countdown.put(cl, listeners.get(cl));
74-
}
75-
}
68+
List<ClockListener> expiredListeners = new ArrayList<>(listeners.values());
7669
tp.getScheduler().onClock(tp, expiredListeners);
7770
}
7871

@@ -109,8 +102,7 @@ public void setClockModel(Class<? extends Clock> clockModel) {
109102
* in time units.
110103
*/
111104
public void addClockListener(ClockListener listener, int period) {
112-
listeners.put(listener, period);
113-
countdown.put(listener, period);
105+
listeners.put(listener, new PeriodicClockListener(tp, listener, period));
114106
}
115107

116108
/**
@@ -119,8 +111,7 @@ public void addClockListener(ClockListener listener, int period) {
119111
* @param listener The listener to register.
120112
*/
121113
public void addClockListener(ClockListener listener) {
122-
listeners.put(listener, 1);
123-
countdown.put(listener, 1);
114+
listeners.put(listener, listener);
124115
}
125116

126117
/**
@@ -131,7 +122,6 @@ public void addClockListener(ClockListener listener) {
131122
*/
132123
public void removeClockListener(ClockListener listener) {
133124
listeners.remove(listener);
134-
countdown.remove(listener);
135125
}
136126

137127
/**

0 commit comments

Comments
 (0)