public Sone getSone(String soneId) {
if (!soneCache.containsKey(soneId)) {
Sone sone = new Sone(soneId);
+ soneDownloader.addSone(sone);
soneCache.put(soneId, sone);
}
return soneCache.get(soneId);
if (localSones.add(sone)) {
SoneInserter soneInserter = new SoneInserter(freenetInterface, sone);
soneInserter.start();
- soneDownloader.addSone(sone);
+ soneDownloader.removeSone(sone);
soneInserters.put(sone, soneInserter);
}
}
}
/**
+ * Removes the given Sone from the downloader.
+ *
+ * @param sone
+ * The Sone to stop watching
+ */
+ public void removeSone(Sone sone) {
+ if (sones.remove(sone)) {
+ freenetInterface.unregisterUsk(sone);
+ }
+ }
+
+ /**
* Fetches the updated Sone. This method is a callback method for
* {@link FreenetInterface#registerUsk(Sone, SoneDownloader)}.
*