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. */