Author: toad
Date: 2008-06-27 21:27:34 +0000 (Fri, 27 Jun 2008)
New Revision: 20831
Modified:
branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
Log:
Activation: keep persistent in the callback so it knows whether to activate the
parent.
Also pass USKFetcherProxyCallback the boolean it needs (doh)
Modified: branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
2008-06-27 21:25:54 UTC (rev 20830)
+++ branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
2008-06-27 21:27:34 UTC (rev 20831)
@@ -639,11 +639,14 @@
private final boolean wasFetchingFinalData;
private final String element;
private final ArchiveExtractCallback callback;
+ /** For activation we need to know whether we are persistent
even though the parent may not have been activated yet */
+ private final boolean persistent;
ArchiveFetcherCallback(boolean wasFetchingFinalData, String
element, ArchiveExtractCallback cb) {
this.wasFetchingFinalData = wasFetchingFinalData;
this.element = element;
this.callback = cb;
+ this.persistent = SingleFileFetcher.this.persistent;
}
public void onSuccess(FetchResult result, ClientGetState state,
ObjectContainer container, ClientContext context) {
@@ -717,6 +720,12 @@
class MultiLevelMetadataCallback implements GetCompletionCallback {
+ private final boolean persistent;
+
+ MultiLevelMetadataCallback() {
+ this.persistent = SingleFileFetcher.this.persistent;
+ }
+
public void onSuccess(FetchResult result, ClientGetState state,
ObjectContainer container, ClientContext context) {
if(persistent)
container.activate(SingleFileFetcher.this, 1);
@@ -804,7 +813,7 @@
} else {
// Transition to SingleFileFetcher
GetCompletionCallback myCB =
- new
USKProxyCompletionCallback(usk, cb);
+ new
USKProxyCompletionCallback(usk, cb, requester.persistent());
// Want to update the latest known good
iff the fetch succeeds.
SingleFileFetcher sf =
new
SingleFileFetcher(requester, myCB, clientMetadata, usk.getSSK(), metaStrings,