/** Interface to freenet. */
private FreenetInterface freenetInterface;
+ /** The Sone downloader. */
+ private SoneDownloader soneDownloader;
+
/** The local Sones. */
private final Set<Sone> localSones = new HashSet<Sone>();
*/
public Core freenetInterface(FreenetInterface freenetInterface) {
this.freenetInterface = freenetInterface;
+ soneDownloader = new SoneDownloader(freenetInterface);
return this;
}
soneCache.put(sone.getId(), sone);
SoneInserter soneInserter = new SoneInserter(freenetInterface, sone);
soneInserter.start();
+ soneDownloader.addSone(sone);
soneInserters.put(sone, soneInserter);
}
}
/**
+ * Adds a remote Sone so that it is watched for updates.
+ *
+ * @param sone
+ * The sone to watch
+ */
+ public void addRemoteSone(Sone sone) {
+ Sone updatedSone = soneCache.put(sone.getId(), sone);
+ soneDownloader.addSone(updatedSone);
+ }
+
+ /**
* Creates a new Sone at a random location.
*
* @param name
Sone sone;
try {
logger.log(Level.FINEST, "Creating new Sone ā%sā at %s (%s)ā¦", new Object[] { name, finalRequestUri, finalInsertUri });
- sone = new Sone(UUID.randomUUID(), name, new FreenetURI(finalRequestUri).setKeyType("USK"), new FreenetURI(finalInsertUri).setKeyType("USK"));
+ sone = new Sone(UUID.randomUUID(), name, new FreenetURI(finalRequestUri).setKeyType("USK").setDocName("Sone-" + name), new FreenetURI(finalInsertUri).setKeyType("USK").setDocName("Sone-" + name));
sone.setProfile(new Profile());
/* set modification counter to 1 so it is inserted immediately. */
sone.setModificationCounter(1);
*/
@Override
protected void serviceStop() {
+ soneDownloader.stop();
/* stop all Sone inserters. */
for (SoneInserter soneInserter : soneInserters.values()) {
soneInserter.stop();
}
/* write null ID as terminator. */
configuration.getStringValue(sonePrefix + "/Reply." + replyId + "/ID").setValue(null);
-
}
+ /* write null ID as terminator. */
+ configuration.getStringValue("Sone/Sone." + soneId + "/ID").setValue(null);
+
} catch (ConfigurationException ce1) {
logger.log(Level.WARNING, "Could not store configuration!", ce1);
}