| 28 | import java.util.concurrent.atomic.AtomicLong; |
| 29 | |
| 30 | public abstract class TickedObject implements Ticked, Listener { |
| 31 | private final AtomicLong lastTick; |
| 32 | private final AtomicLong interval; |
| 33 | private final AtomicInteger skip; |
| 34 | private final AtomicInteger burst; |
| 35 | private final AtomicLong ticks; |
| 36 | private final AtomicInteger dieIn; |
| 37 | private final AtomicBoolean die; |
| 38 | private final long start; |
| 39 | private final String group; |
| 40 | private final String id; |
| 41 | |
| 42 | public TickedObject() { |
| 43 | this("null"); |
| 44 | } |
| 45 | |
| 46 | public TickedObject(String group, String id) { |
| 47 | this(group, id, 1000); |
| 48 | } |
| 49 | |
| 50 | public TickedObject(String group) { |
| 51 | this(group, UUID.randomUUID().toString(), 1000); |
| 52 | } |
| 53 | |
| 54 | public TickedObject(String group, long interval) { |
| 55 | this(group, UUID.randomUUID().toString(), interval); |
| 56 | } |
| 57 | |
| 58 | public TickedObject(String group, String id, long interval) { |
| 59 | this.group = group; |
| 60 | this.id = id; |
| 61 | this.die = new AtomicBoolean(false); |
| 62 | this.dieIn = new AtomicInteger(0); |
| 63 | this.interval = new AtomicLong(interval); |
| 64 | this.lastTick = new AtomicLong(M.ms()); |
| 65 | this.burst = new AtomicInteger(0); |
| 66 | this.skip = new AtomicInteger(0); |
| 67 | this.ticks = new AtomicLong(0); |
| 68 | this.start = M.ms(); |
| 69 | Adapt.instance.getTicker().register(this); |
| 70 | Adapt.instance.registerListener(this); |
| 71 | } |
| 72 | |
| 73 | public void dieAfter(int ticks) { |
| 74 | dieIn.set(ticks); |
| 75 | die.set(true); |
| 76 | } |
| 77 | |
| 78 | @Override |
| 79 | public void unregister() { |
| 80 | Adapt.instance.getTicker().unregister(this); |
| 81 | Adapt.instance.unregisterListener(this); |
| 82 | } |
| 83 | |
| 84 | @Override |
| 85 | public long getLastTick() { |
| 86 | return lastTick.get(); |
| 87 | } |
nothing calls this directly
no outgoing calls
no test coverage detected