package net.jxta.impl.cm.bdb;
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.TimerTask;
import java.util.logging.Logger;
import net.jxta.logging.Logging;
public class CleanerTask extends TimerTask {
private static final Logger LOG = Logger.getLogger(CleanerTask.class.getName());
private WeakReference<BerkeleyDbAdvertisementCache> cacheRef;
public CleanerTask(BerkeleyDbAdvertisementCache cache) {
cacheRef = new WeakReference<BerkeleyDbAdvertisementCache>(cache);
}
@Override
public void run() {
BerkeleyDbAdvertisementCache cache = cacheRef.get();
if(cache == null) {
// the cache is dead, stop trying to clean it
this.cancel();
return;
}
try {
cache.garbageCollect();
} catch (IOException e) {
Logging.logCheckedWarning(LOG, "Error occurred while attempting to clean up cache\n", e);
}
}
}