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;