[freenet-cvs] r11928 - in trunk/freenet/src/freenet/client: . async

nextgens at freenetproject.org nextgens at freenetproject.org
Wed Feb 28 18:51:00 UTC 2007


Author: nextgens
Date: 2007-02-28 18:50:58 +0000 (Wed, 28 Feb 2007)
New Revision: 11928

Modified:
   trunk/freenet/src/freenet/client/InsertBlock.java
   trunk/freenet/src/freenet/client/async/SingleFileInserter.java
Log:
Free the data as soon as we don't need it anymore!

might require some testing though

Modified: trunk/freenet/src/freenet/client/InsertBlock.java
===================================================================
--- trunk/freenet/src/freenet/client/InsertBlock.java	2007-02-28 17:25:08 UTC (rev 11927)
+++ trunk/freenet/src/freenet/client/InsertBlock.java	2007-02-28 18:50:58 UTC (rev 11928)
@@ -28,5 +28,8 @@
 	public Bucket getData() {
 		return data;
 	}
-
+	
+	public void free(){
+		data.free();
+	}
 }

Modified: trunk/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileInserter.java	2007-02-28 17:25:08 UTC (rev 11927)
+++ trunk/freenet/src/freenet/client/async/SingleFileInserter.java	2007-02-28 18:50:58 UTC (rev 11928)
@@ -391,7 +391,11 @@
 			if(logMINOR) Logger.minor(this, "onSuccess("+state+") for "+this);
 			boolean lateStart = false;
 			synchronized(this) {
-				if(finished) return;
+				if(finished){
+					if(freeData)
+						block.free();
+					return;
+				}
 				if(state == sfi) {
 					if(logMINOR) Logger.minor(this, "Splitfile insert succeeded for "+this+" : "+state);
 					splitInsertSuccess = true;
@@ -421,7 +425,11 @@
 
 		public void onFailure(InserterException e, ClientPutState state) {
 			synchronized(this) {
-				if(finished) return;
+				if(finished){
+					if(freeData)
+						block.free();
+					return;
+				}
 			}
 			fail(e);
 		}
@@ -517,7 +525,11 @@
 			ClientPutState oldSFI = null;
 			ClientPutState oldMetadataPutter = null;
 			synchronized(this) {
-				if(finished) return;
+				if(finished){
+					if(freeData)
+						block.free();
+					return;
+				}
 				finished = true;
 				oldSFI = sfi;
 				oldMetadataPutter = metadataPutter;
@@ -552,6 +564,9 @@
 				oldSFI.cancel();
 			if(oldMetadataPutter != null)
 				oldMetadataPutter.cancel();
+			
+			if(freeData)
+				block.free();
 		}
 
 		public void onBlockSetFinished(ClientPutState state) {
@@ -659,6 +674,8 @@
 	}
 
 	public void cancel() {
+		if(freeData)
+			block.free();
 	}
 
 	public void schedule() throws InserterException {




More information about the cvs mailing list