I don't understand the hasNodeStarted code...
On Sun, Sep 24, 2006 at 11:08:38AM +0000, nextgens at freenetproject.org wrote:
> Author: nextgens
> Date: 2006-09-24 11:08:34 +0000 (Sun, 24 Sep 2006)
> New Revision: 10507
>
> Modified:
> trunk/freenet/src/freenet/config/FreenetFilePersistentConfig.java
> trunk/freenet/src/freenet/node/Node.java
> Log:
> Cleaner design for FreenetFilePersistentConfig : we don't need the node
> object at all in fact
>
> Modified: trunk/freenet/src/freenet/config/FreenetFilePersistentConfig.java
> ===================================================================
> --- trunk/freenet/src/freenet/config/FreenetFilePersistentConfig.java
> 2006-09-24 10:44:38 UTC (rev 10506)
> +++ trunk/freenet/src/freenet/config/FreenetFilePersistentConfig.java
> 2006-09-24 11:08:34 UTC (rev 10507)
> @@ -3,13 +3,39 @@
> import java.io.File;
> import java.io.IOException;
>
> -import freenet.node.Node;
> +import freenet.node.Ticker;
> import freenet.support.Logger;
>
> public class FreenetFilePersistentConfig extends FilePersistentConfig {
> -
> - private Node node;
> private boolean isWritingConfig = false;
> + private boolean hasNodeStarted = false;
> + private Ticker ticker;
> + public final Runnable thread = new Runnable() {
> + public void run() {
> + while(!hasNodeStarted){
> + synchronized (this) {
> + hasNodeStarted = true;
> + try{
> + wait(100);
> + } catch (InterruptedException
> e) {
> + hasNodeStarted = false;
> + }
> + }
> + }
> +
> + try {
> + innerStore();
> + } catch (IOException e) {
> + String err = "Cannot store config: "+e;
> + Logger.error(this, err, e);
> + System.err.println(err);
> + e.printStackTrace();
> + }
> + synchronized (storeSync) {
> + isWritingConfig = false;
> + }
> + }
> + };
>
> public FreenetFilePersistentConfig(File f) throws IOException {
> super(f);
> @@ -23,39 +49,18 @@
> }
> }
> synchronized(storeSync) {
> - if(isWritingConfig || node == null){
> + if(isWritingConfig || ticker == null){
> Logger.normal(this, "Already writing the config
> file to disk or the node object hasn't been set : refusing to proceed");
> return;
> }
> isWritingConfig = true;
>
> - node.ps.queueTimedJob(new Runnable() {
> - public void run() {
> - try{
> - while(!node.isHasStarted())
> - Thread.sleep(1000);
> - }catch (InterruptedException e) {}
> - try {
> - innerStore();
> - } catch (IOException e) {
> - String err = "Cannot store
> config: "+e;
> - Logger.error(this, err, e);
> - System.err.println(err);
> - e.printStackTrace();
> - }
> - synchronized (storeSync) {
> - isWritingConfig = false;
> - }
> - }
> - }, 0);
> + ticker.queueTimedJob(thread, 0);
> }
> }
>
> - public void setNode(Node n){
> - if(node != null){
> - Logger.error(this, "The node object has already been
> initialized! it's likely to be a bug.");
> - return;
> - }
> - this.node = n;
> + public void finishedInit(Ticker ticker) {
> + super.finishedInit();
> + this.ticker = ticker;
> }
> }
>
> Modified: trunk/freenet/src/freenet/node/Node.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/Node.java 2006-09-24 10:44:38 UTC (rev
> 10506)
> +++ trunk/freenet/src/freenet/node/Node.java 2006-09-24 11:08:34 UTC (rev
> 10507)
> @@ -1404,9 +1404,11 @@
> this.clientCore.start(config);
>
> // After everything has been created, write the config file
> back to disk.
> - config.finishedInit();
> - config.setNode(this);
> + config.finishedInit(this.ps);
> config.store();
> + synchronized (config.thread) {
> + config.thread.notify();
> + }
>
> // Process any data in the extra peer data directory
> peers.readExtraPeerData();
>
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL:
<https://emu.freenetproject.org/pipermail/devl/attachments/20060925/082874b5/attachment.pgp>