Author: toad
Date: 2008-06-13 18:29:08 +0000 (Fri, 13 Jun 2008)
New Revision: 20321

Modified:
   branches/db4o/freenet/src/freenet/client/ArchiveHandler.java
   branches/db4o/freenet/src/freenet/client/ArchiveManager.java
   branches/db4o/freenet/src/freenet/client/ArchiveStoreContext.java
   branches/db4o/freenet/src/freenet/client/FetchContext.java
   branches/db4o/freenet/src/freenet/client/HighLevelSimpleClientImpl.java
   branches/db4o/freenet/src/freenet/client/async/ClientContext.java
   branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
   branches/db4o/freenet/src/freenet/node/NodeClientCore.java
Log:
Move ArchiveManager from FetchContext to ClientContext.
Significant work remains to separate ArchiveHandler from ArchiveStoreContext
i.e. to split it into the transient-and-internal-to-ArchiveManager and the 
external interface

Modified: branches/db4o/freenet/src/freenet/client/ArchiveHandler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/ArchiveHandler.java        
2008-06-13 17:23:57 UTC (rev 20320)
+++ branches/db4o/freenet/src/freenet/client/ArchiveHandler.java        
2008-06-13 18:29:08 UTC (rev 20321)
@@ -19,7 +19,7 @@
         */
        public abstract Bucket getMetadata(ArchiveContext archiveContext,
                        ClientMetadata dm, int recursionLevel, 
-                       boolean dontEnterImplicitArchives)
+                       boolean dontEnterImplicitArchives, ArchiveManager 
manager)
                        throws ArchiveFailureException, ArchiveRestartException,
                        MetadataParseException, FetchException;

@@ -36,7 +36,7 @@
        public abstract Bucket get(String internalName,
                        ArchiveContext archiveContext, 
                        ClientMetadata dm, int recursionLevel, 
-                       boolean dontEnterImplicitArchives)
+                       boolean dontEnterImplicitArchives, ArchiveManager 
manager)
                        throws ArchiveFailureException, ArchiveRestartException,
                        MetadataParseException, FetchException;


Modified: branches/db4o/freenet/src/freenet/client/ArchiveManager.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/ArchiveManager.java        
2008-06-13 17:23:57 UTC (rev 20320)
+++ branches/db4o/freenet/src/freenet/client/ArchiveManager.java        
2008-06-13 18:29:08 UTC (rev 20321)
@@ -120,7 +120,7 @@
                if(!forceRefetchArchive) handler = getCached(key);
                if(handler != null) return handler;
                if(returnNullIfNotFound) return null;
-               handler = new ArchiveStoreContext(this, key, archiveType, 
forceRefetchArchive);
+               handler = new ArchiveStoreContext(key, archiveType, 
forceRefetchArchive);
                putCached(key, handler);
                return handler;
        }
@@ -184,7 +184,7 @@

                if(logMINOR) Logger.minor(this, "Extracting "+key);
                ctx.onExtract();
-               ctx.removeAllCachedItems(); // flush cache anyway
+               ctx.removeAllCachedItems(this); // flush cache anyway
                long expectedSize = ctx.getLastSize();
                long archiveSize = data.size();
                /** Set if we need to throw a RestartedException rather than 
returning success,

Modified: branches/db4o/freenet/src/freenet/client/ArchiveStoreContext.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/ArchiveStoreContext.java   
2008-06-13 17:23:57 UTC (rev 20320)
+++ branches/db4o/freenet/src/freenet/client/ArchiveStoreContext.java   
2008-06-13 18:29:08 UTC (rev 20321)
@@ -22,7 +22,6 @@
  */
 public class ArchiveStoreContext implements ArchiveHandler {

-       private ArchiveManager manager;
        private FreenetURI key;
        private short archiveType;
        private boolean forceRefetchArchive;
@@ -36,8 +35,7 @@
         * the inner lock to avoid deadlocks. */
        private final DoublyLinkedListImpl myItems;

-       public ArchiveStoreContext(ArchiveManager manager, FreenetURI key, 
short archiveType, boolean forceRefetchArchive) {
-               this.manager = manager;
+       public ArchiveStoreContext(FreenetURI key, short archiveType, boolean 
forceRefetchArchive) {
                this.key = key;
                this.archiveType = archiveType;
                myItems = new DoublyLinkedListImpl();
@@ -49,8 +47,8 @@
         * @return A Bucket containing the metadata, in binary format, for the 
archive.
         */
        public Bucket getMetadata(ArchiveContext archiveContext, ClientMetadata 
dm, int recursionLevel, 
-                       boolean dontEnterImplicitArchives) throws 
ArchiveFailureException, ArchiveRestartException, MetadataParseException, 
FetchException {
-               return get(".metadata", archiveContext, dm, recursionLevel, 
dontEnterImplicitArchives);
+                       boolean dontEnterImplicitArchives, ArchiveManager 
manager) throws ArchiveFailureException, ArchiveRestartException, 
MetadataParseException, FetchException {
+               return get(".metadata", archiveContext, dm, recursionLevel, 
dontEnterImplicitArchives, manager);
        }

        /**
@@ -59,7 +57,7 @@
         * client is finished with it i.e. calls free() or it is finalized.
         */
        public Bucket get(String internalName, ArchiveContext archiveContext, 
ClientMetadata dm, int recursionLevel, 
-                       boolean dontEnterImplicitArchives) throws 
ArchiveFailureException, ArchiveRestartException, MetadataParseException, 
FetchException {
+                       boolean dontEnterImplicitArchives, ArchiveManager 
manager) throws ArchiveFailureException, ArchiveRestartException, 
MetadataParseException, FetchException {

                // Do loop detection on the archive that we are about to fetch.
                archiveContext.doLoopDetection(key);
@@ -102,7 +100,7 @@
        /**
         * Remove all ArchiveStoreItems with this key from the cache.
         */
-       public void removeAllCachedItems() {
+       public void removeAllCachedItems(ArchiveManager manager) {
                ArchiveStoreItem item = null;
                while(true) {
                        synchronized (myItems) {
@@ -138,7 +136,7 @@
                return key;
        }

-       public void extractToCache(Bucket bucket, ArchiveContext actx, String 
element, ArchiveExtractCallback callback) throws ArchiveFailureException, 
ArchiveRestartException {
+       public void extractToCache(Bucket bucket, ArchiveContext actx, String 
element, ArchiveExtractCallback callback, ArchiveManager manager) throws 
ArchiveFailureException, ArchiveRestartException {
                manager.extractToCache(key, archiveType, bucket, actx, this, 
element, callback);
        }


Modified: branches/db4o/freenet/src/freenet/client/FetchContext.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/FetchContext.java  2008-06-13 
17:23:57 UTC (rev 20320)
+++ branches/db4o/freenet/src/freenet/client/FetchContext.java  2008-06-13 
18:29:08 UTC (rev 20321)
@@ -24,7 +24,6 @@
        /** Low-level client to send low-level requests to. */
        public long maxOutputLength;
        public long maxTempLength;
-       public final ArchiveManager archiveManager;
        public final BucketFactory bucketFactory;
        public USKManager uskManager;
        public int maxRecursionLevel;
@@ -61,7 +60,7 @@
                        int maxSplitfileBlockRetries, int 
maxNonSplitfileRetries,
                        boolean allowSplitfiles, boolean followRedirects, 
boolean localRequestOnly,
                        int maxDataBlocksPerSegment, int 
maxCheckBlocksPerSegment,
-                       ArchiveManager archiveManager, BucketFactory 
bucketFactory,
+                       BucketFactory bucketFactory,
                        ClientEventProducer producer, boolean 
cacheLocalRequests, USKManager uskManager, 
                        HealingQueue hq, boolean ignoreTooManyPathComponents, 
Ticker ticker, Executor executor, 
                        Executor[] slowSerialExecutor) {
@@ -72,7 +71,6 @@
                this.uskManager = uskManager;
                this.maxTempLength = curMaxTempLength;
                this.maxMetadataSize = maxMetadataSize;
-               this.archiveManager = archiveManager;
                this.bucketFactory = bucketFactory;
                this.maxRecursionLevel = maxRecursionLevel;
                this.maxArchiveRestarts = maxArchiveRestarts;
@@ -109,7 +107,6 @@
                        this.maxOutputLength = ctx.maxOutputLength;
                        this.maxMetadataSize = ctx.maxMetadataSize;
                        this.maxTempLength = ctx.maxTempLength;
-                       this.archiveManager = ctx.archiveManager;
                        this.bucketFactory = ctx.bucketFactory;
                        this.maxRecursionLevel = ctx.maxRecursionLevel;
                        this.maxArchiveRestarts = ctx.maxArchiveRestarts;
@@ -129,7 +126,6 @@
                        this.maxOutputLength = ctx.maxOutputLength;
                        this.maxMetadataSize = ctx.maxMetadataSize;
                        this.maxTempLength = ctx.maxTempLength;
-                       this.archiveManager = ctx.archiveManager;
                        this.bucketFactory = ctx.bucketFactory;
                        this.maxRecursionLevel = 1;
                        this.maxArchiveRestarts = 0;
@@ -149,7 +145,6 @@
                        this.maxOutputLength = ctx.maxOutputLength;
                        this.maxTempLength = ctx.maxTempLength;
                        this.maxMetadataSize = ctx.maxMetadataSize;
-                       this.archiveManager = ctx.archiveManager;
                        this.bucketFactory = ctx.bucketFactory;
                        this.maxRecursionLevel = ctx.maxRecursionLevel;
                        this.maxArchiveRestarts = ctx.maxArchiveRestarts;
@@ -169,7 +164,6 @@
                        this.maxOutputLength = ctx.maxOutputLength;
                        this.maxMetadataSize = ctx.maxMetadataSize;
                        this.maxTempLength = ctx.maxTempLength;
-                       this.archiveManager = ctx.archiveManager;
                        this.bucketFactory = ctx.bucketFactory;
                        this.maxRecursionLevel = ctx.maxRecursionLevel;
                        this.maxArchiveRestarts = ctx.maxArchiveRestarts;

Modified: 
branches/db4o/freenet/src/freenet/client/HighLevelSimpleClientImpl.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/HighLevelSimpleClientImpl.java     
2008-06-13 17:23:57 UTC (rev 20320)
+++ branches/db4o/freenet/src/freenet/client/HighLevelSimpleClientImpl.java     
2008-06-13 18:29:08 UTC (rev 20321)
@@ -36,7 +36,6 @@

 public class HighLevelSimpleClientImpl implements HighLevelSimpleClient, 
RequestClient {

-       private final ArchiveManager archiveManager;
        private final short priorityClass;
        private final BucketFactory bucketFactory;
        private final BucketFactory persistentBucketFactory;
@@ -84,10 +83,9 @@
        static final int SPLITFILE_CHECK_BLOCKS_PER_SEGMENT = 128;


-       public HighLevelSimpleClientImpl(NodeClientCore node, ArchiveManager 
mgr, BucketFactory bf, RandomSource r, boolean cacheLocalRequests, short 
priorityClass, boolean forceDontIgnoreTooManyPathComponents, Executor[] 
slowSerialExecutor) {
+       public HighLevelSimpleClientImpl(NodeClientCore node, BucketFactory bf, 
RandomSource r, boolean cacheLocalRequests, short priorityClass, boolean 
forceDontIgnoreTooManyPathComponents, Executor[] slowSerialExecutor) {
                this.core = node;
                this.slowSerialExecutor = slowSerialExecutor;
-               archiveManager = mgr;
                this.priorityClass = priorityClass;
                bucketFactory = bf;
                this.persistentFileTracker = node.persistentTempBucketFactory;
@@ -195,7 +193,7 @@
                                SPLITFILE_THREADS, SPLITFILE_BLOCK_RETRIES, 
NON_SPLITFILE_RETRIES,
                                FETCH_SPLITFILES, FOLLOW_REDIRECTS, 
LOCAL_REQUESTS_ONLY,
                                MAX_SPLITFILE_BLOCKS_PER_SEGMENT, 
MAX_SPLITFILE_CHECK_BLOCKS_PER_SEGMENT,
-                               archiveManager, bucketFactory, 
globalEventProducer, 
+                               bucketFactory, globalEventProducer, 
                                cacheLocalRequests, core.uskManager, 
healingQueue, 
                                false, core.getTicker(), core.getExecutor(), 
slowSerialExecutor);
        }

Modified: branches/db4o/freenet/src/freenet/client/async/ClientContext.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientContext.java   
2008-06-13 17:23:57 UTC (rev 20320)
+++ branches/db4o/freenet/src/freenet/client/async/ClientContext.java   
2008-06-13 18:29:08 UTC (rev 20321)
@@ -5,6 +5,7 @@

 import com.db4o.ObjectContainer;

+import freenet.client.ArchiveManager;
 import freenet.client.FECQueue;
 import freenet.client.FetchException;
 import freenet.client.InsertException;
@@ -30,6 +31,7 @@
        public final long nodeDBHandle;
        public final BackgroundBlockEncoder backgroundBlockEncoder;
        public final RandomSource random;
+       public final ArchiveManager archiveManager;

        public ClientContext(NodeClientCore core) {
                this.fecQueue = core.fecQueue;
@@ -42,6 +44,7 @@
                this.nodeDBHandle = core.node.nodeDBHandle;
                this.backgroundBlockEncoder = core.backgroundBlockEncoder;
                this.random = core.random;
+               archiveManager = core.archiveManager;
        }

        public void start(final ClientPutter inserter, final boolean 
earlyEncode) throws InsertException {

Modified: branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java       
2008-06-13 17:23:57 UTC (rev 20320)
+++ branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java       
2008-06-13 18:29:08 UTC (rev 20321)
@@ -270,7 +270,7 @@
                                // It's more efficient to keep the existing ah 
if we can, and it is vital in
                                // the case of binary blobs.
                                if(ah == null || !ah.getKey().equals(thisKey))
-                                       ah = (ArchiveStoreContext) 
ctx.archiveManager.makeHandler(thisKey, metadata.getArchiveType(), false, 
+                                       ah = (ArchiveStoreContext) 
context.archiveManager.makeHandler(thisKey, metadata.getArchiveType(), false, 
                                                        (parent instanceof 
ClientGetter ? ((ClientGetter)parent).collectingBinaryBlob() : false));
                                archiveMetadata = metadata;
                                // ah is set. This means we are currently 
handling an archive.

Modified: branches/db4o/freenet/src/freenet/node/NodeClientCore.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/NodeClientCore.java  2008-06-13 
17:23:57 UTC (rev 20320)
+++ branches/db4o/freenet/src/freenet/node/NodeClientCore.java  2008-06-13 
18:29:08 UTC (rev 20321)
@@ -76,7 +76,7 @@

        private static boolean logMINOR;
        public final USKManager uskManager;
-       final ArchiveManager archiveManager;
+       public final ArchiveManager archiveManager;
        public final RequestStarterGroup requestStarters;
        private final HealingQueue healingQueue;
        /** Must be included as a hidden field in order for any dangerous HTTP 
operation to complete successfully. */


Reply via email to