package org.limewire.nio;
import org.limewire.nio.observer.StubReadWriteObserver;
class StubThrottleListener implements ThrottleListener {
private Object attach;
private boolean closed;
private int bandwidthAvailableCalls;
private Throttle throttle;
private StubReadWriteObserver rwo;
private int given;
StubThrottleListener(StubReadWriteObserver rwo, Throttle throttle) {
this.attach = rwo;
this.rwo = rwo;
this.throttle = throttle;
}
void setThrottle(Throttle throttle) {
this.throttle = throttle;
}
public void setAttachment(Object attachment) { this.attach = attachment; }
public Object getAttachment() { return attach; }
public boolean bandwidthAvailable() { bandwidthAvailableCalls++; return !closed; }
public boolean isOpen() { return !closed; }
void close() { closed = true; }
void setClosed(boolean closed) { this.closed = closed; }
int bandwidthAvailableCalls() { return bandwidthAvailableCalls; }
void clear() { bandwidthAvailableCalls = 0; closed = false; }
public void requestBandwidth() {
given = throttle.request();
rwo.setAmountGiven(given);
}
public void releaseBandwidth() {
throttle.release(rwo.getAmountLeft());
}
int given() {
return given;
}
}