[freenet-cvs] r11680 - trunk/freenet/src/freenet/node/fcp

bback at freenetproject.org bback at freenetproject.org
Tue Feb 6 08:44:51 UTC 2007


Author: bback
Date: 2007-02-06 08:44:50 +0000 (Tue, 06 Feb 2007)
New Revision: 11680

Modified:
   trunk/freenet/src/freenet/node/fcp/ClientGet.java
   trunk/freenet/src/freenet/node/fcp/ClientPutBase.java
   trunk/freenet/src/freenet/node/fcp/ClientRequest.java
Log:
fixes for PersistentRequestRemoved

Modified: trunk/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientGet.java	2007-02-05 11:52:15 UTC (rev 11679)
+++ trunk/freenet/src/freenet/node/fcp/ClientGet.java	2007-02-06 08:44:50 UTC (rev 11680)
@@ -360,7 +360,6 @@
 	}
 
 	private void trySendDataFoundOrGetFailed(FCPConnectionOutputHandler handler) {
-
 		FCPMessage msg;
 
 		// Don't need to lock. succeeded is only ever set, never unset.
@@ -452,7 +451,26 @@
 	public void onGeneratedURI(FreenetURI uri, BaseClientPutter state) {
 		// Ignore
 	}
+    
+    public void requestWasRemoved() {
+        // if request is still running, send a GetFailed with code=cancelled
+        if( !finished ) {
+            synchronized(this) {
+                succeeded = false;
+                finished = true;
+                FetchException cancelled = new FetchException(FetchException.CANCELLED);
+                getFailedMessage = new GetFailedMessage(cancelled, identifier, global);
+            }
+            trySendDataFoundOrGetFailed(null);
+        }
+        // notify client that request was removed
+        FCPMessage msg = new PersistentRequestRemovedMessage(getIdentifier(), global);
+        client.queueClientRequestMessage(msg, 0);
 
+        freeData();
+        finish();
+    }
+
 	public void receive(ClientEvent ce) {
 		// Don't need to lock, verbosity is final and finished is never unset.
 		if(finished) return;

Modified: trunk/freenet/src/freenet/node/fcp/ClientPutBase.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutBase.java	2007-02-05 11:52:15 UTC (rev 11679)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutBase.java	2007-02-06 08:44:50 UTC (rev 11680)
@@ -2,8 +2,7 @@
 
 import java.net.MalformedURLException;
 
-import freenet.client.InserterContext;
-import freenet.client.InserterException;
+import freenet.client.*;
 import freenet.client.async.BaseClientPutter;
 import freenet.client.async.ClientCallback;
 import freenet.client.events.ClientEvent;
@@ -134,7 +133,25 @@
 		}
 		trySendGeneratedURIMessage(null);
 	}
+    
+    public void requestWasRemoved() {
+        // if request is still running, send a PutFailed with code=cancelled
+        if( !finished ) {
+            synchronized(this) {
+                finished = true;
+                InserterException cancelled = new InserterException(InserterException.CANCELLED);
+                putFailedMessage = new PutFailedMessage(cancelled, identifier, global);
+            }
+            trySendFinalMessage(null);
+        }
+        // notify client that request was removed
+        FCPMessage msg = new PersistentRequestRemovedMessage(getIdentifier(), global);
+        client.queueClientRequestMessage(msg, 0);
 
+        freeData();
+        finish();
+    }
+
 	public void receive(ClientEvent ce) {
 		if(finished) return;
 		if(ce instanceof SplitfileProgressEvent) {

Modified: trunk/freenet/src/freenet/node/fcp/ClientRequest.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientRequest.java	2007-02-05 11:52:15 UTC (rev 11679)
+++ trunk/freenet/src/freenet/node/fcp/ClientRequest.java	2007-02-06 08:44:50 UTC (rev 11680)
@@ -304,15 +304,11 @@
     /**
      * Called after a RemovePersistentRequest. Send a PersistentRequestRemoved to the clients.
      */
-    public void requestWasRemoved() {
-        FCPMessage msg = new PersistentRequestRemovedMessage(getIdentifier(), global);
-        client.queueClientRequestMessage(msg, 0);
-    }
-
+    public abstract void requestWasRemoved();
+    
 	/** Utility method for storing details of a possibly encrypted bucket. */
 	protected void bucketToFS(SimpleFieldSet fs, String name, boolean includeSize, Bucket data) {
 		SerializableToFieldSetBucket bucket = (SerializableToFieldSetBucket) data;
 		fs.put(name, bucket.toFieldSet());
 	}
-
 }




More information about the cvs mailing list