Author: toad
Date: 2009-03-20 20:46:45 +0000 (Fri, 20 Mar 2009)
New Revision: 26123
Modified:
branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
branches/db4o/freenet/src/freenet/client/async/USKFetcherTag.java
branches/db4o/freenet/src/freenet/client/async/USKManager.java
Log:
Track whether USKFetcherTag owns the FetchContext, delete it if it does
Modified: branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
2009-03-20 20:46:02 UTC (rev 26122)
+++ branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
2009-03-20 20:46:45 UTC (rev 26123)
@@ -1073,7 +1073,7 @@
// Do a thorough, blocking search
USKFetcherTag tag =
context.uskManager.getFetcher(usk.copy(-usk.suggestedEdition), ctx, false,
requester.persistent(),
- new
MyUSKFetcherCallback(requester, cb, usk, metaStrings, ctx, actx, maxRetries,
recursionLevel, dontTellClientGet, l, returnBucket, requester.persistent()),
container, context);
+ new
MyUSKFetcherCallback(requester, cb, usk, metaStrings, ctx, actx, maxRetries,
recursionLevel, dontTellClientGet, l, returnBucket, requester.persistent()),
false, container, context);
if(isEssential)
requester.addMustSucceedBlocks(1, container);
return tag;
Modified: branches/db4o/freenet/src/freenet/client/async/USKFetcherTag.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/USKFetcherTag.java
2009-03-20 20:46:02 UTC (rev 26122)
+++ branches/db4o/freenet/src/freenet/client/async/USKFetcherTag.java
2009-03-20 20:46:45 UTC (rev 26123)
@@ -36,8 +36,9 @@
private short pollingPriorityNormal;
private short pollingPriorityProgress;
private boolean finished;
+ private final boolean ownFetchContext;
- private USKFetcherTag(USK origUSK, USKFetcherCallback callback, long
nodeDBHandle, boolean persistent, ObjectContainer container, FetchContext ctx,
boolean keepLastData, long token) {
+ private USKFetcherTag(USK origUSK, USKFetcherCallback callback, long
nodeDBHandle, boolean persistent, ObjectContainer container, FetchContext ctx,
boolean keepLastData, long token, boolean hasOwnFetchContext) {
this.nodeDBHandle = nodeDBHandle;
this.callback = callback;
this.origUSK = origUSK;
@@ -46,6 +47,7 @@
this.ctx = ctx;
this.keepLastData = keepLastData;
this.token = token;
+ this.ownFetchContext = hasOwnFetchContext;
pollingPriorityNormal = callback.getPollingPriorityNormal();
pollingPriorityProgress = callback.getPollingPriorityProgress();
priority = pollingPriorityNormal;
@@ -65,8 +67,8 @@
* @return
*/
public static USKFetcherTag create(USK usk, USKFetcherCallback
callback, long nodeDBHandle, boolean persistent,
- ObjectContainer container, FetchContext ctx, boolean
keepLast, int token) {
- USKFetcherTag tag = new USKFetcherTag(usk, callback,
nodeDBHandle, persistent, container, ctx, keepLast, token);
+ ObjectContainer container, FetchContext ctx, boolean
keepLast, int token, boolean hasOwnFetchContext) {
+ USKFetcherTag tag = new USKFetcherTag(usk, callback,
nodeDBHandle, persistent, container, ctx, keepLast, token, hasOwnFetchContext);
if(persistent) container.store(tag);
return tag;
}
@@ -207,6 +209,10 @@
public void removeFrom(ObjectContainer container, ClientContext
context) {
container.activate(origUSK, 5);
origUSK.removeFrom(container);
+ if(ownFetchContext) {
+ container.activate(ctx, 1);
+ ctx.removeFrom(container);
+ }
container.delete(this);
}
Modified: branches/db4o/freenet/src/freenet/client/async/USKManager.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/USKManager.java
2009-03-20 20:46:02 UTC (rev 26122)
+++ branches/db4o/freenet/src/freenet/client/async/USKManager.java
2009-03-20 20:46:45 UTC (rev 26123)
@@ -78,8 +78,8 @@
}
public USKFetcherTag getFetcher(USK usk, FetchContext ctx, boolean
keepLast, boolean persistent,
- USKFetcherCallback callback, ObjectContainer container,
ClientContext context) {
- return USKFetcherTag.create(usk, callback,
context.nodeDBHandle, persistent, container, ctx, keepLast, 0);
+ USKFetcherCallback callback, boolean ownFetchContext,
ObjectContainer container, ClientContext context) {
+ return USKFetcherTag.create(usk, callback,
context.nodeDBHandle, persistent, container, ctx, keepLast, 0, ownFetchContext);
}
synchronized USKFetcher getFetcher(USK usk, FetchContext ctx,
@@ -98,7 +98,7 @@
}
public USKFetcherTag getFetcherForInsertDontSchedule(USK usk, short
prioClass, USKFetcherCallback cb, RequestClient client, ObjectContainer
container, ClientContext context, boolean persistent) {
- return getFetcher(usk, persistent ? new
FetchContext(backgroundFetchContext, FetchContext.IDENTICAL_MASK, false, null)
: backgroundFetchContext, true, client.persistent(), cb, container, context);
+ return getFetcher(usk, persistent ? new
FetchContext(backgroundFetchContext, FetchContext.IDENTICAL_MASK, false, null)
: backgroundFetchContext, true, client.persistent(), cb, true, container,
context);
}
public void startTemporaryBackgroundFetcher(USK usk, ClientContext
context) {
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs