projects
/
Sone.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'show-versions' into next
[Sone.git]
/
src
/
main
/
java
/
net
/
pterodactylus
/
sone
/
core
/
Core.java
diff --git
a/src/main/java/net/pterodactylus/sone/core/Core.java
b/src/main/java/net/pterodactylus/sone/core/Core.java
index
2ef2d57
..
78df9ef
100644
(file)
--- a/
src/main/java/net/pterodactylus/sone/core/Core.java
+++ b/
src/main/java/net/pterodactylus/sone/core/Core.java
@@
-45,6
+45,7
@@
import net.pterodactylus.util.config.Configuration;
import net.pterodactylus.util.config.ConfigurationException;
import net.pterodactylus.util.logging.Logging;
import net.pterodactylus.util.number.Numbers;
import net.pterodactylus.util.config.ConfigurationException;
import net.pterodactylus.util.logging.Logging;
import net.pterodactylus.util.number.Numbers;
+import net.pterodactylus.util.version.Version;
import freenet.keys.FreenetURI;
/**
import freenet.keys.FreenetURI;
/**
@@
-52,7
+53,7
@@
import freenet.keys.FreenetURI;
*
* @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
*
* @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
-public class Core implements IdentityListener {
+public class Core implements IdentityListener
, UpdateListener
{
/**
* Enumeration for the possible states of a {@link Sone}.
/**
* Enumeration for the possible states of a {@link Sone}.
@@
-86,6
+87,9
@@
public class Core implements IdentityListener {
/** The configuration. */
private Configuration configuration;
/** The configuration. */
private Configuration configuration;
+ /** Whether we’re currently saving the configuration. */
+ private boolean storingConfiguration = false;
+
/** The identity manager. */
private final IdentityManager identityManager;
/** The identity manager. */
private final IdentityManager identityManager;
@@
-95,6
+99,9
@@
public class Core implements IdentityListener {
/** The Sone downloader. */
private final SoneDownloader soneDownloader;
/** The Sone downloader. */
private final SoneDownloader soneDownloader;
+ /** The update checker. */
+ private final UpdateChecker updateChecker;
+
/** Whether the core has been stopped. */
private volatile boolean stopped;
/** Whether the core has been stopped. */
private volatile boolean stopped;
@@
-159,6
+166,7
@@
public class Core implements IdentityListener {
this.freenetInterface = freenetInterface;
this.identityManager = identityManager;
this.soneDownloader = new SoneDownloader(this, freenetInterface);
this.freenetInterface = freenetInterface;
this.identityManager = identityManager;
this.soneDownloader = new SoneDownloader(this, freenetInterface);
+ this.updateChecker = new UpdateChecker(freenetInterface);
}
//
}
//
@@
-230,6
+238,15
@@
public class Core implements IdentityListener {
}
/**
}
/**
+ * Returns the update checker.
+ *
+ * @return The update checker
+ */
+ public UpdateChecker getUpdateChecker() {
+ return updateChecker;
+ }
+
+ /**
* Returns the status of the given Sone.
*
* @param sone
* Returns the status of the given Sone.
*
* @param sone
@@
-1306,6
+1323,7
@@
public class Core implements IdentityListener {
if (newPosts.remove(post.getId())) {
knownPosts.add(post.getId());
coreListenerManager.fireMarkPostKnown(post);
if (newPosts.remove(post.getId())) {
knownPosts.add(post.getId());
coreListenerManager.fireMarkPostKnown(post);
+ saveConfiguration();
}
}
}
}
}
}
@@
-1386,6
+1404,7
@@
public class Core implements IdentityListener {
if (newReplies.remove(reply.getId())) {
knownReplies.add(reply.getId());
coreListenerManager.fireMarkReplyKnown(reply);
if (newReplies.remove(reply.getId())) {
knownReplies.add(reply.getId());
coreListenerManager.fireMarkReplyKnown(reply);
+ saveConfiguration();
}
}
}
}
}
}
@@
-1395,6
+1414,8
@@
public class Core implements IdentityListener {
*/
public void start() {
loadConfiguration();
*/
public void start() {
loadConfiguration();
+ updateChecker.addUpdateListener(this);
+ updateChecker.start();
}
/**
}
/**
@@
-1406,6
+1427,9
@@
public class Core implements IdentityListener {
soneInserter.stop();
}
}
soneInserter.stop();
}
}
+ updateChecker.stop();
+ updateChecker.removeUpdateListener(this);
+ soneDownloader.stop();
saveConfiguration();
stopped = true;
}
saveConfiguration();
stopped = true;
}
@@
-1413,9
+1437,18
@@
public class Core implements IdentityListener {
/**
* Saves the current options.
*/
/**
* Saves the current options.
*/
- public synchronized void saveConfiguration() {
+ public void saveConfiguration() {
+ synchronized (configuration) {
+ if (storingConfiguration) {
+ logger.log(Level.FINE, "Already storing configuration…");
+ return;
+ }
+ storingConfiguration = true;
+ }
+
/* store the options first. */
try {
/* store the options first. */
try {
+ configuration.getIntValue("Option/ConfigurationVersion").setValue(0);
configuration.getIntValue("Option/InsertionDelay").setValue(options.getIntegerOption("InsertionDelay").getReal());
configuration.getBooleanValue("Option/SoneRescueMode").setValue(options.getBooleanOption("SoneRescueMode").getReal());
configuration.getBooleanValue("Option/ClearOnNextRestart").setValue(options.getBooleanOption("ClearOnNextRestart").getReal());
configuration.getIntValue("Option/InsertionDelay").setValue(options.getIntegerOption("InsertionDelay").getReal());
configuration.getBooleanValue("Option/SoneRescueMode").setValue(options.getBooleanOption("SoneRescueMode").getReal());
configuration.getBooleanValue("Option/ClearOnNextRestart").setValue(options.getBooleanOption("ClearOnNextRestart").getReal());
@@
-1453,6
+1486,10
@@
public class Core implements IdentityListener {
} catch (ConfigurationException ce1) {
logger.log(Level.SEVERE, "Could not store configuration!", ce1);
} catch (ConfigurationException ce1) {
logger.log(Level.SEVERE, "Could not store configuration!", ce1);
+ } finally {
+ synchronized (configuration) {
+ storingConfiguration = false;
+ }
}
}
}
}
@@
-1603,4
+1640,16
@@
public class Core implements IdentityListener {
/* TODO */
}
/* TODO */
}
+ //
+ // INTERFACE UpdateListener
+ //
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void updateFound(Version version, long releaseTime) {
+ coreListenerManager.fireUpdateFound(version, releaseTime);
+ }
+
}
}