Author: toad
Date: 2009-04-15 22:10:57 +0000 (Wed, 15 Apr 2009)
New Revision: 26856
Modified:
trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
Log:
Factor out removeFrom
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2009-04-15 20:35:42 UTC (rev 26855)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2009-04-15 22:10:57 UTC (rev 26856)
@@ -701,15 +701,33 @@
blockNums.clear();
cancelled = true;
}
- if(persistent) {
+ if(persistent && oldNums != null && oldNums.length > 0) {
for(Integer i : oldNums) container.delete(i);
- container.delete(blockNums);
- container.delete(this);
- if(!dontDeactivateSeg)
- container.deactivate(segment, 1);
- // We do not need to call SendableGet as it has no
internal data structures that need deleting.
}
+ if(persistent) removeFrom(container, context,
dontDeactivateSeg);
}
+
+ public void removeFrom(ObjectContainer container, ClientContext
context, boolean dontDeactivateSeg) {
+ container.activate(this, 1);
+ container.activate(segment, 1);
+ container.activate(blockNums, 1);
+ synchronized(segment) {
+ if(!cancelled) {
+ Logger.error(this, "Removing when not
cancelled! on "+this, new Exception("error"));
+ cancelled = true;
+ }
+ if(!blockNums.isEmpty()) {
+ Logger.error(this, "Removing when blockNums not
empty! on "+this, new Exception("error"));
+ for(Integer i : blockNums) container.delete(i);
+ blockNums.clear();
+ }
+ }
+ container.delete(blockNums);
+ container.delete(this);
+ if(!dontDeactivateSeg)
+ container.deactivate(segment, 1);
+ // We do not need to call SendableGet as it has no internal
data structures that need deleting.
+ }
@Override
public long getCooldownWakeup(Object token, ObjectContainer container) {
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs