package net.jxta.impl.endpoint.netty;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.jboss.netty.util.Timeout;
import org.jboss.netty.util.Timer;
import org.jboss.netty.util.TimerTask;
public class FakeTimer implements Timer {
private List<FakeTimeout> timeouts = new LinkedList<FakeTimeout>();
public Timeout newTimeout(TimerTask task, long delay, TimeUnit unit) {
FakeTimeout t = new FakeTimeout(task, delay, unit);
timeouts.add(t);
return t;
}
public void expireAll() throws Exception {
List<FakeTimeout> currentTimeouts = new LinkedList<FakeTimeout>(timeouts);
for(FakeTimeout t : currentTimeouts) {
t.expire();
}
timeouts.remove(currentTimeouts);
}
public Set<Timeout> stop() {
return null;
}
private class FakeTimeout implements Timeout {
private TimerTask task;
private long delay;
private TimeUnit unit;
private boolean cancelled;
private boolean expired;
public FakeTimeout(TimerTask task, long delay, TimeUnit unit) {
this.task = task;
this.delay = delay;
this.unit = unit;
this.cancelled = false;
this.expired = false;
}
public void cancel() {
timeouts.remove(this);
cancelled = true;
}
public TimerTask getTask() {
return task;
}
public Timer getTimer() {
return FakeTimer.this;
}
public boolean isCancelled() {
return cancelled;
}
public boolean isExpired() {
return expired;
}
public void expire() throws Exception {
this.expired = true;
task.run(this);
}
}
public int numRegisteredTimeouts() {
return timeouts.size();
}
}