* Matthew Toseland <[EMAIL PROTECTED]> [2006-06-17 18:49:02]:
> Synchronization? Might we end up making two NodeUpdater's?
We are using callbacks, we have to be threadsafe btw I hardly see how
that can cause a deadlock, so it won't hurt ;)
NextGen$
>
> On Sat, Jun 17, 2006 at 02:27:00PM +0000, [EMAIL PROTECTED] wrote:
> > Author: nextgens
> > Date: 2006-06-17 14:26:52 +0000 (Sat, 17 Jun 2006)
> > New Revision: 9262
> >
> > Modified:
> > trunk/freenet/src/freenet/node/Version.java
> > trunk/freenet/src/freenet/node/updater/AutoUpdateAllowedCallback.java
> > trunk/freenet/src/freenet/node/updater/NodeUpdater.java
> > trunk/freenet/src/freenet/node/updater/UpdaterEnabledCallback.java
> > Log:
> > 823: We allow the auto-updater to be enabled on the fly
> >
> > Modified: trunk/freenet/src/freenet/node/Version.java
> > ===================================================================
> > --- trunk/freenet/src/freenet/node/Version.java 2006-06-17 12:31:13 UTC
> > (rev 9261)
> > +++ trunk/freenet/src/freenet/node/Version.java 2006-06-17 14:26:52 UTC
> > (rev 9262)
> > @@ -18,7 +18,7 @@
> > public static final String protocolVersion = "1.0";
> >
> > /** The build number of the current revision */
> > - private static final int buildNumber = 822;
> > + private static final int buildNumber = 823;
> >
> > /** Oldest build of Fred we will talk to */
> > private static final int lastGoodBuild = 765;
> >
> > Modified:
> > trunk/freenet/src/freenet/node/updater/AutoUpdateAllowedCallback.java
> > ===================================================================
> > --- trunk/freenet/src/freenet/node/updater/AutoUpdateAllowedCallback.java
> > 2006-06-17 12:31:13 UTC (rev 9261)
> > +++ trunk/freenet/src/freenet/node/updater/AutoUpdateAllowedCallback.java
> > 2006-06-17 14:26:52 UTC (rev 9262)
> > @@ -3,6 +3,7 @@
> > import freenet.config.BooleanCallback;
> > import freenet.config.InvalidConfigValueException;
> > import freenet.node.Node;
> > +import freenet.support.Logger;
> >
> > public class AutoUpdateAllowedCallback implements BooleanCallback {
> >
> > @@ -13,13 +14,15 @@
> > }
> >
> > public boolean get() {
> > - NodeUpdater nu = node.getNodeUpdater();
> > - return nu.isAutoUpdateAllowed;
> > + if(node.getNodeUpdater()==null)
> > + return false;
> > + else
> > + return node.getNodeUpdater().isAutoUpdateAllowed;
> > }
> >
> > public void set(boolean val) throws InvalidConfigValueException {
> > if(val == get()) return;
> > - // Good idea to prevent it ?
> > - throw new InvalidConfigValueException("Cannot be updated on the
> > fly for security reasons");
> > + node.getNodeUpdater().setAutoupdateAllowed(val);
> > + Logger.normal(this, "Node auto update is now allowed = "+val);
> > }
> > }
> > \ No newline at end of file
> >
> > Modified: trunk/freenet/src/freenet/node/updater/NodeUpdater.java
> > ===================================================================
> > --- trunk/freenet/src/freenet/node/updater/NodeUpdater.java 2006-06-17
> > 12:31:13 UTC (rev 9261)
> > +++ trunk/freenet/src/freenet/node/updater/NodeUpdater.java 2006-06-17
> > 14:26:52 UTC (rev 9262)
> > @@ -54,7 +54,7 @@
> > private boolean isRunning = false;
> > private boolean isFetching = false;
> >
> > - public final boolean isAutoUpdateAllowed;
> > + public boolean isAutoUpdateAllowed;
> >
> > private final UpdatedVersionAvailableUserAlert alert;
> > private RevocationKeyFoundUserAlert revocationAlert;
> > @@ -113,6 +113,7 @@
> > }
> >
> > public synchronized void onFoundEdition(long l, USK key){
> > + if(!isRunning) return;
> > int found = (int)key.suggestedEdition;
> >
> > if(found > availableVersion){
> > @@ -122,7 +123,6 @@
> > maybeUpdate();
> > }
> > }, 60*1000); // leave some time in case we get later
> > editions
> > - this.isRunning=true;
> > }
> > }
> >
> > @@ -135,8 +135,6 @@
> > isRunning=false;
> > return;
> > }
> > -
> > - isRunning=false;
> > }
> >
> > alert.set(availableVersion,false);
> > @@ -162,6 +160,7 @@
> > private Object updateSync = new Object();
> >
> > public void Update() {
> > + if(!isRunning) return;
> > synchronized(updateSync) {
> > innerUpdate();
> > }
> > @@ -466,6 +465,10 @@
> > return isRunning;
> > }
> >
> > + protected synchronized void kill(){
> > + isRunning = false;
> > + }
> > +
> > public synchronized void blow(String msg){
> > if(hasBeenBlown){
> > Logger.error(this, "The key has ALREADY been marked as
> > blown!");
> > @@ -490,12 +493,16 @@
> > return revocationURI;
> > }
> >
> > + protected synchronized void setAutoupdateAllowed(boolean b) {
> > + this.isAutoUpdateAllowed = b;
> > + }
> > +
> > public static NodeUpdater maybeCreate(Node node, Config config) throws
> > Exception {
> > SubConfig updaterConfig = new SubConfig("node.updater", config);
> >
> > updaterConfig.register("enabled", true, 1, false, "Enable Node's
> > updater?",
> > "Whether to enable the node's updater. It won't
> > auto-update unless node.updater.autoupdate is true, it will just warn",
> > - new UpdaterEnabledCallback(node));
> > + new UpdaterEnabledCallback(node, config));
> >
> > boolean enabled = updaterConfig.getBoolean("enabled");
> >
> >
> > Modified: trunk/freenet/src/freenet/node/updater/UpdaterEnabledCallback.java
> > ===================================================================
> > --- trunk/freenet/src/freenet/node/updater/UpdaterEnabledCallback.java
> > 2006-06-17 12:31:13 UTC (rev 9261)
> > +++ trunk/freenet/src/freenet/node/updater/UpdaterEnabledCallback.java
> > 2006-06-17 14:26:52 UTC (rev 9262)
> > @@ -1,24 +1,44 @@
> > package freenet.node.updater;
> >
> > import freenet.config.BooleanCallback;
> > +import freenet.config.Config;
> > import freenet.config.InvalidConfigValueException;
> > +import freenet.config.SubConfig;
> > +import freenet.keys.FreenetURI;
> > import freenet.node.Node;
> > +import freenet.support.Logger;
> >
> > public class UpdaterEnabledCallback implements BooleanCallback {
> >
> > final Node node;
> > + final Config nodeConfig;
> >
> > - UpdaterEnabledCallback(Node n) {
> > + UpdaterEnabledCallback(Node n, Config nc) {
> > this.node = n;
> > + this.nodeConfig = nc;
> > }
> >
> > public boolean get() {
> > - return node.getNodeUpdater() != null;
> > + if(node.nodeUpdater==null)
> > + return false;
> > + else
> > + return node.nodeUpdater.isRunning();
> > }
> >
> > public void set(boolean val) throws InvalidConfigValueException {
> > if(val == get()) return;
> > - // FIXME implement
> > - throw new InvalidConfigValueException("Cannot be updated on the
> > fly");
> > + if(val){
> > + try{
> > + SubConfig sc = nodeConfig.get("node.updater");
> > + node.nodeUpdater = new NodeUpdater(node ,
> > sc.getBoolean("autoupdate"), new FreenetURI(sc.getString("URI")), new
> > FreenetURI(sc.getString("revocationURI")));
> > + Logger.normal(this, "Starting up the node
> > updater");
> > + }catch (Exception e){
> > + Logger.error(this, "unable to start the node
> > updater up "+e);
> > + throw new InvalidConfigValueException("Unable
> > to enable the Node Updater "+e);
> > + }
> > + }else{
> > + node.nodeUpdater.kill();
> > + Logger.normal(this, "Shutting down the node updater");
> > + }
> > }
> > }
> > \ No newline at end of file
> >
> > _______________________________________________
> > cvs mailing list
> > [email protected]
> > http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
> >
>
> --
> Matthew J Toseland - [EMAIL PROTECTED]
> Freenet Project Official Codemonkey - http://freenetproject.org/
> ICTHUS - Nothing is impossible. Our Boss says so.
> _______________________________________________
> Devl mailing list
> [email protected]
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl
_______________________________________________
Devl mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl