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;


Reply via email to