Author: toad
Date: 2008-06-05 19:31:19 +0000 (Thu, 05 Jun 2008)
New Revision: 20226
Modified:
branches/db4o/freenet/src/freenet/client/FECCallback.java
branches/db4o/freenet/src/freenet/client/FECQueue.java
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
Log:
Add ClientContext to the FEC API.
Modified: branches/db4o/freenet/src/freenet/client/FECCallback.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/FECCallback.java 2008-06-05
19:26:09 UTC (rev 20225)
+++ branches/db4o/freenet/src/freenet/client/FECCallback.java 2008-06-05
19:31:19 UTC (rev 20226)
@@ -5,6 +5,8 @@
import com.db4o.ObjectContainer;
+import freenet.client.async.ClientContext;
+
/**
* An interface wich has to be implemented by FECJob submitters
*
@@ -14,7 +16,7 @@
*/
public interface FECCallback {
- public void onEncodedSegment(ObjectContainer container);
+ public void onEncodedSegment(ObjectContainer container, ClientContext
context);
- public void onDecodedSegment(ObjectContainer container);
+ public void onDecodedSegment(ObjectContainer container, ClientContext
context);
}
\ No newline at end of file
Modified: branches/db4o/freenet/src/freenet/client/FECQueue.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/FECQueue.java 2008-06-05
19:26:09 UTC (rev 20225)
+++ branches/db4o/freenet/src/freenet/client/FECQueue.java 2008-06-05
19:31:19 UTC (rev 20226)
@@ -11,10 +11,10 @@
import com.db4o.ObjectSet;
import com.db4o.query.Query;
+import freenet.client.async.ClientContext;
import freenet.client.async.DBJob;
import freenet.client.async.DBJobRunner;
import freenet.node.PrioRunnable;
-import freenet.node.RequestScheduler;
import freenet.support.Executor;
import freenet.support.Logger;
import freenet.support.OOMHandler;
@@ -35,13 +35,15 @@
private transient int priorities;
private transient DBJobRunner databaseJobRunner;
private transient Executor executor;
+ private transient ClientContext clientContext;
/** Called after creating or deserializing the FECQueue. Initialises
all the transient fields. */
- void init(int priorities, int maxCacheSize, DBJobRunner dbJobRunner,
Executor exec) {
+ void init(int priorities, int maxCacheSize, DBJobRunner dbJobRunner,
Executor exec, ClientContext clientContext) {
this.priorities = priorities;
this.maxPersistentQueueCacheSize = maxCacheSize;
this.databaseJobRunner = dbJobRunner;
this.executor = exec;
+ this.clientContext = clientContext;
transientQueue = new LinkedList[priorities];
persistentQueueCache = new LinkedList[priorities];
for(int i=0;i<priorities;i++) {
@@ -142,17 +144,17 @@
try {
if(!job.persistent) {
if (job.isADecodingJob)
-
job.callback.onDecodedSegment(null);
+
job.callback.onDecodedSegment(null, clientContext);
else
-
job.callback.onEncodedSegment(null);
+
job.callback.onEncodedSegment(null, clientContext);
} else {
databaseJobRunner.queue(new DBJob() {
public void
run(ObjectContainer container) {
if(job.isADecodingJob)
-
job.callback.onDecodedSegment(container);
+
job.callback.onDecodedSegment(container, clientContext);
else
-
job.callback.onEncodedSegment(container);
+
job.callback.onEncodedSegment(container, clientContext);
container.delete(job);
}
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-06-05 19:26:09 UTC (rev 20225)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-06-05 19:31:19 UTC (rev 20226)
@@ -219,7 +219,7 @@
}
}
- public void onDecodedSegment(ObjectContainer container) {
+ public void onDecodedSegment(ObjectContainer container, ClientContext
context) {
try {
if(isCollectingBinaryBlob()) {
for(int i=0;i<dataBuckets.length;i++) {
@@ -266,11 +266,12 @@
// Encode any check blocks we don't have
if(codec != null) {
- codec.addToQueue(new FECJob(codec, dataBuckets,
checkBuckets, 32768, fetchContext.bucketFactory, this, false));
+ codec.addToQueue(new FECJob(codec, context.fecQueue,
dataBuckets, checkBuckets, 32768, fetchContext.bucketFactory, this, false,
parentFetcher.parent.getPriorityClass(), parentFetcher.parent.isPersistent()),
+ context.fecQueue, container);
}
}
- public void onEncodedSegment(ObjectContainer container) {
+ public void onEncodedSegment(ObjectContainer container, ClientContext
context) {
synchronized(this) {
// Now insert *ALL* blocks on which we had at least one
failure, and didn't eventually succeed
for(int i=0;i<dataBuckets.length;i++) {
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
2008-06-05 19:26:09 UTC (rev 20225)
+++
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
2008-06-05 19:31:19 UTC (rev 20226)
@@ -464,9 +464,9 @@
}
}
- public void onDecodedSegment(ObjectContainer container) {} // irrevelant
+ public void onDecodedSegment(ObjectContainer container, ClientContext
context) {} // irrevelant
- public void onEncodedSegment(ObjectContainer container) {
+ public void onEncodedSegment(ObjectContainer container, ClientContext
context) {
// Start the inserts
try {
for (int i = 0; i < checkBlockInserters.length; i++) {