Author: toad
Date: 2009-02-18 20:49:01 +0000 (Wed, 18 Feb 2009)
New Revision: 25709
Modified:
branches/db4o/freenet/src/freenet/client/ArchiveHandler.java
branches/db4o/freenet/src/freenet/client/ArchiveHandlerImpl.java
branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
Log:
Free the bucket after unpacking it
Modified: branches/db4o/freenet/src/freenet/client/ArchiveHandler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/ArchiveHandler.java
2009-02-18 20:02:07 UTC (rev 25708)
+++ branches/db4o/freenet/src/freenet/client/ArchiveHandler.java
2009-02-18 20:49:01 UTC (rev 25709)
@@ -90,7 +90,7 @@
* @param container
* @param context
*/
- public abstract void extractPersistentOffThread(Bucket bucket,
ArchiveContext actx, String element, ArchiveExtractCallback callback,
ObjectContainer container, ClientContext context);
+ public abstract void extractPersistentOffThread(Bucket bucket, boolean
freeBucket, ArchiveContext actx, String element, ArchiveExtractCallback
callback, ObjectContainer container, ClientContext context);
public abstract void activateForExecution(ObjectContainer container);
Modified: branches/db4o/freenet/src/freenet/client/ArchiveHandlerImpl.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/ArchiveHandlerImpl.java
2009-02-18 20:02:07 UTC (rev 25708)
+++ branches/db4o/freenet/src/freenet/client/ArchiveHandlerImpl.java
2009-02-18 20:49:01 UTC (rev 25709)
@@ -97,10 +97,10 @@
* @param container
* @param context
*/
- public void extractPersistentOffThread(Bucket bucket, ArchiveContext
actx, String element, ArchiveExtractCallback callback, ObjectContainer
container, final ClientContext context) {
+ public void extractPersistentOffThread(Bucket bucket, boolean
freeBucket, ArchiveContext actx, String element, ArchiveExtractCallback
callback, ObjectContainer container, final ClientContext context) {
assert(element != null); // no callback would be called...
final ArchiveManager manager = context.archiveManager;
- final ArchiveExtractTag tag = new ArchiveExtractTag(this,
bucket, actx, element, callback, context.nodeDBHandle);
+ final ArchiveExtractTag tag = new ArchiveExtractTag(this,
bucket, freeBucket, actx, element, callback, context.nodeDBHandle);
container.store(tag);
runPersistentOffThread(tag, context, manager,
context.persistentBucketFactory);
}
@@ -148,6 +148,10 @@
else
tag.callback.gotBucket(data, container, context);
tag.callback.removeFrom(container);
+ if(tag.freeBucket) {
+ tag.data.free();
+
tag.data.removeFrom(container);
+ }
container.deactivate(tag.callback, 1);
container.delete(tag);
}
@@ -162,6 +166,10 @@
container.activate(tag.callback, 1);
tag.callback.onFailed(e, container, context);
tag.callback.removeFrom(container);
+ if(tag.freeBucket) {
+ tag.data.free();
+
tag.data.removeFrom(container);
+ }
container.delete(tag);
}
@@ -175,6 +183,10 @@
container.activate(tag.callback, 1);
tag.callback.onFailed(e, container, context);
tag.callback.removeFrom(container);
+ if(tag.freeBucket) {
+ tag.data.free();
+
tag.data.removeFrom(container);
+ }
container.delete(tag);
}
@@ -251,14 +263,16 @@
final ArchiveHandlerImpl handler;
final Bucket data;
+ final boolean freeBucket;
final ArchiveContext actx;
final String element;
final ArchiveExtractCallback callback;
final long nodeDBHandle;
- ArchiveExtractTag(ArchiveHandlerImpl handler, Bucket data,
ArchiveContext actx, String element, ArchiveExtractCallback callback, long
nodeDBHandle) {
+ ArchiveExtractTag(ArchiveHandlerImpl handler, Bucket data, boolean
freeBucket, ArchiveContext actx, String element, ArchiveExtractCallback
callback, long nodeDBHandle) {
this.handler = handler;
this.data = data;
+ this.freeBucket = freeBucket;
this.actx = actx;
this.element = element;
this.callback = callback;
Modified: branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
2009-02-18 20:02:07 UTC (rev 25708)
+++ branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
2009-02-18 20:49:01 UTC (rev 25709)
@@ -837,7 +837,7 @@
if(persistent)
container.activate(actx, 1);
ah.activateForExecution(container);
-
ah.extractPersistentOffThread(result.asBucket(), actx, element, callback,
container, context);
+
ah.extractPersistentOffThread(result.asBucket(), true, actx, element, callback,
container, context);
if(!wasActive)
container.deactivate(SingleFileFetcher.this, 1);
if(state != null)
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs