Author: toad
Date: 2008-06-18 19:33:33 +0000 (Wed, 18 Jun 2008)
New Revision: 20456
Modified:
branches/db4o/freenet/src/freenet/client/FetchContext.java
branches/db4o/freenet/src/freenet/client/async/ClientContext.java
branches/db4o/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java
branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
branches/db4o/freenet/src/freenet/client/async/USKFetcher.java
branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java
Log:
Remove BucketFactory from FetchContext. Move it (with a method to get the right
one) to ClientContext.
Modified: branches/db4o/freenet/src/freenet/client/FetchContext.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/FetchContext.java 2008-06-18
19:22:12 UTC (rev 20455)
+++ branches/db4o/freenet/src/freenet/client/FetchContext.java 2008-06-18
19:33:33 UTC (rev 20456)
@@ -21,7 +21,6 @@
/** Low-level client to send low-level requests to. */
public long maxOutputLength;
public long maxTempLength;
- public final BucketFactory bucketFactory;
public USKManager uskManager;
public int maxRecursionLevel;
public int maxArchiveRestarts;
@@ -60,7 +59,6 @@
this.uskManager = uskManager;
this.maxTempLength = curMaxTempLength;
this.maxMetadataSize = maxMetadataSize;
- this.bucketFactory = bucketFactory;
this.maxRecursionLevel = maxRecursionLevel;
this.maxArchiveRestarts = maxArchiveRestarts;
this.maxArchiveLevels = maxArchiveLevels;
@@ -91,7 +89,6 @@
this.maxOutputLength = ctx.maxOutputLength;
this.maxMetadataSize = ctx.maxMetadataSize;
this.maxTempLength = ctx.maxTempLength;
- this.bucketFactory = ctx.bucketFactory;
this.maxRecursionLevel = ctx.maxRecursionLevel;
this.maxArchiveRestarts = ctx.maxArchiveRestarts;
this.maxArchiveLevels = ctx.maxArchiveLevels;
@@ -110,7 +107,6 @@
this.maxOutputLength = ctx.maxOutputLength;
this.maxMetadataSize = ctx.maxMetadataSize;
this.maxTempLength = ctx.maxTempLength;
- this.bucketFactory = ctx.bucketFactory;
this.maxRecursionLevel = 1;
this.maxArchiveRestarts = 0;
this.maxArchiveLevels = ctx.maxArchiveLevels;
@@ -129,7 +125,6 @@
this.maxOutputLength = ctx.maxOutputLength;
this.maxTempLength = ctx.maxTempLength;
this.maxMetadataSize = ctx.maxMetadataSize;
- this.bucketFactory = ctx.bucketFactory;
this.maxRecursionLevel = ctx.maxRecursionLevel;
this.maxArchiveRestarts = ctx.maxArchiveRestarts;
this.maxArchiveLevels = ctx.maxArchiveLevels;
@@ -148,7 +143,6 @@
this.maxOutputLength = ctx.maxOutputLength;
this.maxMetadataSize = ctx.maxMetadataSize;
this.maxTempLength = ctx.maxTempLength;
- this.bucketFactory = ctx.bucketFactory;
this.maxRecursionLevel = ctx.maxRecursionLevel;
this.maxArchiveRestarts = ctx.maxArchiveRestarts;
this.maxArchiveLevels = ctx.maxArchiveLevels;
Modified: branches/db4o/freenet/src/freenet/client/async/ClientContext.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientContext.java
2008-06-18 19:22:12 UTC (rev 20455)
+++ branches/db4o/freenet/src/freenet/client/async/ClientContext.java
2008-06-18 19:33:33 UTC (rev 20456)
@@ -35,6 +35,7 @@
public final RandomSource random;
public final ArchiveManager archiveManager;
public final BucketFactory persistentBucketFactory;
+ public final BucketFactory tempBucketFactory;
public final HealingQueue healingQueue;
public final USKManager uskManager;
@@ -47,6 +48,7 @@
this.random = core.random;
archiveManager = core.archiveManager;
this.persistentBucketFactory =
core.persistentEncryptedTempBucketFactory;
+ this.tempBucketFactory = core.tempBucketFactory;
this.healingQueue = core.getHealingQueue();
this.uskManager = core.uskManager;
}
@@ -127,5 +129,12 @@
inserter.start(null, this);
}
}
+
+ public BucketFactory getBucketFactory(boolean persistent) {
+ if(persistent)
+ return persistentBucketFactory;
+ else
+ return tempBucketFactory;
+ }
}
Modified:
branches/db4o/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java
2008-06-18 19:22:12 UTC (rev 20455)
+++ branches/db4o/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java
2008-06-18 19:33:33 UTC (rev 20456)
@@ -135,7 +135,7 @@
protected Bucket extract(ClientKeyBlock block, RequestScheduler sched,
ObjectContainer container, ClientContext context) {
Bucket data;
try {
- data = block.decode(ctx.bucketFactory,
(int)(Math.min(ctx.maxOutputLength, Integer.MAX_VALUE)), false);
+ data =
block.decode(context.getBucketFactory(parent.persistent()),
(int)(Math.min(ctx.maxOutputLength, Integer.MAX_VALUE)), false);
} catch (KeyDecodeException e1) {
if(Logger.shouldLog(Logger.MINOR, this))
Logger.minor(this, "Decode failure: "+e1, e1);
Modified: branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
2008-06-18 19:22:12 UTC (rev 20455)
+++ branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
2008-06-18 19:33:33 UTC (rev 20456)
@@ -189,7 +189,7 @@
Compressor c = (Compressor)
decompressors.removeLast();
try {
long maxLen =
Math.max(ctx.maxTempLength, ctx.maxOutputLength);
- data = c.decompress(data,
ctx.bucketFactory, maxLen, maxLen * 4, decompressors.isEmpty() ? returnBucket :
null);
+ data = c.decompress(data,
context.getBucketFactory(parent.persistent()), maxLen, maxLen * 4,
decompressors.isEmpty() ? returnBucket : null);
} catch (IOException e) {
onFailure(new
FetchException(FetchException.BUCKET_ERROR, e), false, sched, container,
context);
return;
Modified: branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java
2008-06-18 19:22:12 UTC (rev 20455)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java
2008-06-18 19:33:33 UTC (rev 20456)
@@ -176,7 +176,7 @@
* Bucket containing the fetched data.
* @throws FetchException If the fetch failed for some reason.
*/
- private Bucket finalStatus() throws FetchException {
+ private Bucket finalStatus(ClientContext context) throws FetchException
{
long finalLength = 0;
for(int i=0;i<segments.length;i++) {
SplitFileFetcherSegment s = segments[i];
@@ -199,7 +199,7 @@
if((returnBucket != null) && decompressors.isEmpty())
output = returnBucket;
else
- output =
fetchContext.bucketFactory.makeBucket(finalLength);
+ output =
context.getBucketFactory(parent.persistent()).makeBucket(finalLength);
os = output.getOutputStream();
for(int i=0;i<segments.length;i++) {
SplitFileFetcherSegment s = segments[i];
@@ -254,7 +254,7 @@
}
finished = true;
}
- Bucket data = finalStatus();
+ Bucket data = finalStatus(context);
// Decompress
while(!decompressors.isEmpty()) {
Compressor c = (Compressor)
decompressors.removeLast();
@@ -262,7 +262,7 @@
try {
Bucket out = returnBucket;
if(!decompressors.isEmpty()) out = null;
- data = c.decompress(data,
fetchContext.bucketFactory, maxLen, maxLen * 4, out);
+ data = c.decompress(data,
context.getBucketFactory(parent.persistent()), maxLen, maxLen * 4, out);
} catch (IOException e) {
cb.onFailure(new
FetchException(FetchException.BUCKET_ERROR, e), this, container, context);
return;
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-06-18 19:22:12 UTC (rev 20455)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-06-18 19:33:33 UTC (rev 20456)
@@ -201,11 +201,11 @@
seg.possiblyRemoveFromParent();
if(decodeNow) {
removeSubSegments();
- decode(container, sched);
+ decode(container, sched.getContext(), sched);
}
}
- public void decode(ObjectContainer container, RequestScheduler sched) {
+ public void decode(ObjectContainer container, ClientContext context,
RequestScheduler sched) {
// Now decode
if(logMINOR) Logger.minor(this, "Decoding
"+SplitFileFetcherSegment.this);
@@ -213,7 +213,7 @@
if(splitfileType != Metadata.SPLITFILE_NONREDUNDANT) {
FECQueue queue = sched.getFECQueue();
- codec.addToQueue(new FECJob(codec, queue, dataBuckets,
checkBuckets, CHKBlock.DATA_LENGTH, fetchContext.bucketFactory, this, true,
parentFetcher.parent.getPriorityClass(), parentFetcher.parent.persistent()),
+ codec.addToQueue(new FECJob(codec, queue, dataBuckets,
checkBuckets, CHKBlock.DATA_LENGTH,
context.getBucketFactory(parentFetcher.parent.persistent()), this, true,
parentFetcher.parent.getPriorityClass(), parentFetcher.parent.persistent()),
queue, container);
// Now have all the data blocks (not necessarily all
the check blocks)
}
@@ -232,7 +232,7 @@
}
}
}
- decodedData = fetchContext.bucketFactory.makeBucket(-1);
+ decodedData =
context.getBucketFactory(parentFetcher.parent.persistent()).makeBucket(-1);
if(logMINOR) Logger.minor(this, "Copying data from data
blocks");
OutputStream os = decodedData.getOutputStream();
for(int i=0;i<dataBuckets.length;i++) {
@@ -266,7 +266,7 @@
// Encode any check blocks we don't have
if(codec != null) {
- codec.addToQueue(new FECJob(codec, context.fecQueue,
dataBuckets, checkBuckets, 32768, fetchContext.bucketFactory, this, false,
parentFetcher.parent.getPriorityClass(), parentFetcher.parent.persistent()),
+ codec.addToQueue(new FECJob(codec, context.fecQueue,
dataBuckets, checkBuckets, 32768,
context.getBucketFactory(parentFetcher.parent.persistent()), this, false,
parentFetcher.parent.getPriorityClass(), parentFetcher.parent.persistent()),
context.fecQueue, container);
}
}
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2008-06-18 19:22:12 UTC (rev 20455)
+++
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2008-06-18 19:33:33 UTC (rev 20456)
@@ -266,7 +266,7 @@
ClientContext context = sched.getContext();
Bucket data;
try {
- data = block.decode(ctx.bucketFactory,
(int)(Math.min(ctx.maxOutputLength, Integer.MAX_VALUE)), false);
+ data =
block.decode(sched.getContext().getBucketFactory(segment.parentFetcher.parent.persistent()),
(int)(Math.min(ctx.maxOutputLength, Integer.MAX_VALUE)), false);
} catch (KeyDecodeException e1) {
if(Logger.shouldLog(Logger.MINOR, this))
Logger.minor(this, "Decode failure: "+e1, e1);
Modified: branches/db4o/freenet/src/freenet/client/async/USKFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/USKFetcher.java
2008-06-18 19:22:12 UTC (rev 20455)
+++ branches/db4o/freenet/src/freenet/client/async/USKFetcher.java
2008-06-18 19:33:33 UTC (rev 20456)
@@ -334,7 +334,7 @@
Bucket data = null;
if(decode) {
try {
- data = lastRequestData =
block.decode(ctx.bucketFactory, 1025 /* it's an SSK */, true);
+ data = lastRequestData =
block.decode(context.getBucketFactory(parent.persistent()), 1025 /* it's an SSK
*/, true);
} catch (KeyDecodeException e) {
data = null;
} catch (IOException e) {
Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java 2008-06-18
19:22:12 UTC (rev 20455)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java 2008-06-18
19:33:33 UTC (rev 20456)
@@ -110,7 +110,7 @@
if(persistenceType == PERSIST_FOREVER)
ret =
server.core.persistentTempBucketFactory.makeEncryptedBucket();
else
- ret = fctx.bucketFactory.makeBucket(-1);
+ ret =
server.core.tempBucketFactory.makeBucket(-1);
}
returnBucket = ret;
getter = new ClientGetter(this,
server.core.requestStarters.chkFetchScheduler,
server.core.requestStarters.sskFetchScheduler, uri, fctx, priorityClass,
@@ -162,7 +162,7 @@
if(persistenceType == PERSIST_FOREVER)
ret =
server.core.persistentTempBucketFactory.makeEncryptedBucket();
else
- ret = fctx.bucketFactory.makeBucket(-1);
+ ret =
server.core.tempBucketFactory.makeBucket(-1);
} catch (IOException e) {
Logger.error(this, "Cannot create bucket for
temp storage: "+e, e);
getter = null;
@@ -244,7 +244,7 @@
if(persistenceType == PERSIST_FOREVER)
ret =
server.core.persistentTempBucketFactory.makeEncryptedBucket();
else
- ret =
fctx.bucketFactory.makeBucket(-1);
+ ret =
server.core.tempBucketFactory.makeBucket(-1);
} catch (IOException e1) {
Logger.error(this, "Cannot create
bucket for temp storage: "+e, e);
getter = null;