Author: toad
Date: 2008-06-16 17:13:55 +0000 (Mon, 16 Jun 2008)
New Revision: 20374

Modified:
   branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java
   branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java
   branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java
   branches/db4o/freenet/src/freenet/node/fcp/ClientRequest.java
   branches/db4o/freenet/src/freenet/node/fcp/FCPClient.java
   branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java
Log:
Start (especially on post-startup) on the database job runner

Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java   2008-06-16 
17:01:12 UTC (rev 20373)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java   2008-06-16 
17:13:55 UTC (rev 20374)
@@ -7,6 +7,8 @@
 import java.io.IOException;
 import java.util.HashSet;

+import com.db4o.ObjectContainer;
+
 import freenet.client.FetchContext;
 import freenet.client.FetchException;
 import freenet.client.FetchResult;
@@ -14,6 +16,7 @@
 import freenet.client.async.BaseClientPutter;
 import freenet.client.async.BinaryBlob;
 import freenet.client.async.ClientCallback;
+import freenet.client.async.ClientContext;
 import freenet.client.async.ClientGetter;
 import freenet.client.async.ClientRequester;
 import freenet.client.events.ClientEvent;
@@ -315,12 +318,12 @@
                                allDataPending = new 
AllDataMessage(returnBucket, identifier, global, startupTime, completionTime);
        }

-       public void start() {
+       public void start(ObjectContainer container, ClientContext context) {
                try {
                        synchronized(this) {
                                if(finished) return;
                        }
-                       getter.start();
+                       getter.start(container, context);
                        if(persistenceType != PERSIST_CONNECTION && !finished) {
                                FCPMessage msg = persistentTagMessage();
                                client.queueClientRequestMessage(msg, 0);
@@ -328,6 +331,8 @@
                        synchronized(this) {
                                started = true;
                        }
+                       if(persistenceType == PERSIST_FOREVER)
+                               container.set(this); // Update
                } catch (FetchException e) {
                        synchronized(this) {
                                started = true;

Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java   2008-06-16 
17:01:12 UTC (rev 20373)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java   2008-06-16 
17:13:55 UTC (rev 20374)
@@ -19,6 +19,7 @@
 import freenet.client.Metadata;
 import freenet.client.MetadataUnresolvedException;
 import freenet.client.async.BinaryBlob;
+import freenet.client.async.ClientContext;
 import freenet.client.async.ClientGetter;
 import freenet.client.async.ClientPutter;
 import freenet.crypt.SHA256;
@@ -35,6 +36,8 @@

 import java.util.Arrays;

+import com.db4o.ObjectContainer;
+
 public class ClientPut extends ClientPutBase {

        final ClientPutter putter;
@@ -363,14 +366,14 @@

        }

-       public void start() {
+       public void start(ObjectContainer container, ClientContext context) {
                if(Logger.shouldLog(Logger.MINOR, this))
                        Logger.minor(this, "Starting "+this+" : "+identifier);
                synchronized(this) {
                        if(finished) return;
                }
                try {
-                       putter.start(earlyEncode);
+                       putter.start(earlyEncode, false, container, context);
                        if(persistenceType != PERSIST_CONNECTION && !finished) {
                                FCPMessage msg = persistentTagMessage();
                                client.queueClientRequestMessage(msg, 0);
@@ -378,6 +381,8 @@
                        synchronized(this) {
                                started = true;
                        }
+                       if(persistenceType == PERSIST_FOREVER)
+                               container.set(this); // Update
                } catch (InsertException e) {
                        synchronized(this) {
                                started = true;

Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java        
2008-06-16 17:01:12 UTC (rev 20373)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java        
2008-06-16 17:13:55 UTC (rev 20374)
@@ -11,10 +11,13 @@
 import java.util.Iterator;
 import java.util.Vector;

+import com.db4o.ObjectContainer;
+
 import freenet.client.DefaultMIMETypes;
 import freenet.client.FetchException;
 import freenet.client.FetchResult;
 import freenet.client.InsertException;
+import freenet.client.async.ClientContext;
 import freenet.client.async.ClientGetter;
 import freenet.client.async.ClientRequester;
 import freenet.client.async.ManifestElement;
@@ -227,18 +230,20 @@
                }
        }

-       public void start() {
+       public void start(ObjectContainer container, ClientContext context) {
                if(finished) return;
                if(started) return;
                try {
                        if(putter != null)
-                               putter.start();
+                               putter.start(container, context);
                        started = true;
                        if(logMINOR) Logger.minor(this, "Started "+putter);
                        if(persistenceType != PERSIST_CONNECTION && !finished) {
                                FCPMessage msg = persistentTagMessage();
                                client.queueClientRequestMessage(msg, 0);
                        }
+                       if(persistenceType == PERSIST_FOREVER)
+                               container.set(this); // Update
                } catch (InsertException e) {
                        started = true;
                        onFailure(e, null);

Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientRequest.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientRequest.java       
2008-06-16 17:01:12 UTC (rev 20373)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientRequest.java       
2008-06-16 17:13:55 UTC (rev 20374)
@@ -3,6 +3,8 @@
 import java.io.*;
 import java.net.*;

+import com.db4o.ObjectContainer;
+
 import freenet.client.async.*;
 import freenet.keys.*;
 import freenet.support.*;
@@ -290,7 +292,7 @@
        }

        /** Start the request, if it has not already been started. */
-       public abstract void start();
+       public abstract void start(ObjectContainer container, ClientContext 
context);

        protected boolean started;


Modified: branches/db4o/freenet/src/freenet/node/fcp/FCPClient.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/FCPClient.java   2008-06-16 
17:01:12 UTC (rev 20373)
+++ branches/db4o/freenet/src/freenet/node/fcp/FCPClient.java   2008-06-16 
17:13:55 UTC (rev 20374)
@@ -8,8 +8,12 @@

 import com.db4o.ObjectContainer;

+import freenet.client.async.ClientContext;
+import freenet.client.async.DBJob;
+import freenet.client.async.DBJobRunner;
 import freenet.node.RequestClient;
 import freenet.support.Logger;
+import freenet.support.io.NativeThread;

 /**
  * An FCP client.
@@ -267,14 +271,21 @@
        /**
         * Start all delayed-start requests.
         */
-       public void finishStart(ObjectContainer container) {
-               assert((persistenceType == ClientRequest.PERSIST_FOREVER) == 
(container != null));
+       public void finishStart(DBJobRunner runner) {
                ClientRequest[] reqs;
                synchronized(this) {
                        reqs = (ClientRequest[]) toStart.toArray(new 
ClientRequest[toStart.size()]);
                }
-               for(int i=0;i<reqs.length;i++)
-                       reqs[i].start();
+               for(int i=0;i<reqs.length;i++) {
+                       final ClientRequest req = reqs[i];
+                       runner.queue(new DBJob() {
+
+                               public void run(ObjectContainer container, 
ClientContext context) {
+                                       req.start(container, context);
+                               }
+                               
+                       }, NativeThread.HIGH_PRIORITY + reqs[i].getPriority(), 
false);
+               }
        }

        public String toString() {

Modified: branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java   2008-06-16 
17:01:12 UTC (rev 20373)
+++ branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java   2008-06-16 
17:13:55 UTC (rev 20374)
@@ -664,7 +664,7 @@
         * some time to start them.
         */
        public void finishStart() {
-               this.globalForeverClient.finishStart();
+               
this.globalForeverClient.finishStart(node.clientCore.clientContext.jobRunner);

                FCPClient[] clients;
                synchronized(this) {
@@ -672,7 +672,7 @@
                }

                for(int i=0;i<clients.length;i++) {
-                       clients[i].finishStart();
+                       
clients[i].finishStart(node.clientCore.clientContext.jobRunner);
                }

                hasFinishedStart = true;


Reply via email to