package freenet.node;
import java.lang.ref.WeakReference;
import freenet.support.LogThresholdCallback;
import freenet.support.Logger;
import freenet.support.Logger.LogLevel;
class PeerNodeBackoffStatusChecker implements Runnable {
final WeakReference<PeerNode> ref;
private static volatile boolean logMINOR;
static {
Logger.registerLogThresholdCallback(new LogThresholdCallback(){
@Override
public void shouldUpdate(){
logMINOR = Logger.shouldLog(LogLevel.MINOR, this);
}
});
}
public PeerNodeBackoffStatusChecker(WeakReference<PeerNode> ref) {
this.ref = ref;
}
@Override
public void run() {
PeerNode pn = ref.get();
if(pn == null) return;
if(pn.cachedRemoved()) {
if(logMINOR && pn.node.peers.havePeer(pn)) {
Logger.error(this, "Removed flag is set yet is in peers table?!: "+pn);
} else {
return;
}
}
if(!pn.node.peers.havePeer(pn)) {
if(!pn.cachedRemoved())
Logger.error(this, "Not in peers table but not flagged as removed: "+pn);
return;
}
pn.setPeerNodeStatus(System.currentTimeMillis(), true);
}
}