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());
        }
-
 }


Reply via email to