Author: toad
Date: 2008-06-20 18:06:45 +0000 (Fri, 20 Jun 2008)
New Revision: 20533

Modified:
   branches/db4o/freenet/src/freenet/client/FetchWaiter.java
   branches/db4o/freenet/src/freenet/client/HighLevelSimpleClientImpl.java
   branches/db4o/freenet/src/freenet/client/PutWaiter.java
   branches/db4o/freenet/src/freenet/client/async/ClientCallback.java
   branches/db4o/freenet/src/freenet/client/async/ClientPutter.java
   branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java
   branches/db4o/freenet/src/freenet/node/NodeARKInserter.java
   branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java
   branches/db4o/freenet/src/freenet/node/fcp/ClientPutBase.java
   branches/db4o/freenet/src/freenet/node/updater/NodeUpdater.java
   branches/db4o/freenet/src/freenet/node/updater/RevocationChecker.java
   
branches/db4o/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
Log:
Store the progress message.

Modified: branches/db4o/freenet/src/freenet/client/FetchWaiter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/FetchWaiter.java   2008-06-20 
17:35:38 UTC (rev 20532)
+++ branches/db4o/freenet/src/freenet/client/FetchWaiter.java   2008-06-20 
18:06:45 UTC (rev 20533)
@@ -59,7 +59,7 @@
                // Ignore
        }

-       public void onFetchable(BaseClientPutter state) {
+       public void onFetchable(BaseClientPutter state, ObjectContainer 
container) {
                // Ignore
        }
 }

Modified: 
branches/db4o/freenet/src/freenet/client/HighLevelSimpleClientImpl.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/HighLevelSimpleClientImpl.java     
2008-06-20 17:35:38 UTC (rev 20532)
+++ branches/db4o/freenet/src/freenet/client/HighLevelSimpleClientImpl.java     
2008-06-20 18:06:45 UTC (rev 20533)
@@ -215,7 +215,7 @@
                        // Impossible
                }

-               public void onFetchable(BaseClientPutter state) {
+               public void onFetchable(BaseClientPutter state, ObjectContainer 
container) {
                        // Impossible
                }


Modified: branches/db4o/freenet/src/freenet/client/PutWaiter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/PutWaiter.java     2008-06-20 
17:35:38 UTC (rev 20532)
+++ branches/db4o/freenet/src/freenet/client/PutWaiter.java     2008-06-20 
18:06:45 UTC (rev 20533)
@@ -65,7 +65,7 @@
                // Ignore
        }

-       public void onFetchable(BaseClientPutter state) {
+       public void onFetchable(BaseClientPutter state, ObjectContainer 
container) {
                // Ignore
        }


Modified: branches/db4o/freenet/src/freenet/client/async/ClientCallback.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientCallback.java  
2008-06-20 17:35:38 UTC (rev 20532)
+++ branches/db4o/freenet/src/freenet/client/async/ClientCallback.java  
2008-06-20 18:06:45 UTC (rev 20533)
@@ -32,5 +32,5 @@
        public void onMajorProgress();

        /** Called when the inserted data is fetchable (don't rely on this) */
-       public void onFetchable(BaseClientPutter state);
+       public void onFetchable(BaseClientPutter state, ObjectContainer 
container);
 }

Modified: branches/db4o/freenet/src/freenet/client/async/ClientPutter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientPutter.java    
2008-06-20 17:35:38 UTC (rev 20532)
+++ branches/db4o/freenet/src/freenet/client/async/ClientPutter.java    
2008-06-20 18:06:45 UTC (rev 20533)
@@ -258,7 +258,7 @@
        }

        public void onFetchable(ClientPutState state, ObjectContainer 
container) {
-               client.onFetchable(this);
+               client.onFetchable(this, container);
        }

        public boolean canRestart() {

Modified: 
branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java    
2008-06-20 17:35:38 UTC (rev 20532)
+++ branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java    
2008-06-20 18:06:45 UTC (rev 20533)
@@ -723,7 +723,7 @@
                        if(!metadataPuttersUnfetchable.isEmpty()) return;
                        fetchable = true;
                }
-               cb.onFetchable(this);
+               cb.onFetchable(this, container);
        }

        public void onFetchable(ClientPutState state, ObjectContainer 
container) {
@@ -735,7 +735,7 @@
                        if(!putHandlersWaitingForFetchable.isEmpty()) return;
                        fetchable = true;
                }
-               cb.onFetchable(this);
+               cb.onFetchable(this, container);
        }

        public void onTransition(ClientGetState oldState, ClientGetState 
newState, ObjectContainer container) {

Modified: branches/db4o/freenet/src/freenet/node/NodeARKInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/NodeARKInserter.java 2008-06-20 
17:35:38 UTC (rev 20532)
+++ branches/db4o/freenet/src/freenet/node/NodeARKInserter.java 2008-06-20 
18:06:45 UTC (rev 20533)
@@ -259,7 +259,7 @@
                // Ignore
        }

-       public void onFetchable(BaseClientPutter state) {
+       public void onFetchable(BaseClientPutter state, ObjectContainer 
container) {
                // Ignore, we don't care
        }


Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java   2008-06-20 
17:35:38 UTC (rev 20532)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java   2008-06-20 
18:06:45 UTC (rev 20533)
@@ -751,7 +751,7 @@
                }
        }

-       public void onFetchable(BaseClientPutter state) {
+       public void onFetchable(BaseClientPutter state, ObjectContainer 
container) {
                // Ignore, we don't insert
        }


Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientPutBase.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientPutBase.java       
2008-06-20 17:35:38 UTC (rev 20532)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientPutBase.java       
2008-06-20 18:06:45 UTC (rev 20533)
@@ -8,6 +8,7 @@
 import freenet.client.async.BaseClientPutter;
 import freenet.client.async.ClientCallback;
 import freenet.client.async.ClientContext;
+import freenet.client.async.DBJob;
 import freenet.client.events.ClientEvent;
 import freenet.client.events.ClientEventListener;
 import freenet.client.events.FinishedCompressionEvent;
@@ -19,6 +20,7 @@
 import freenet.support.Fields;
 import freenet.support.Logger;
 import freenet.support.SimpleFieldSet;
+import freenet.support.io.NativeThread;

 /**
  * Base class for ClientPut and ClientPutDir.
@@ -215,24 +217,24 @@
                        if((verbosity & VERBOSITY_SPLITFILE_PROGRESS) == 
VERBOSITY_SPLITFILE_PROGRESS) {
                                SimpleProgressMessage progress = 
                                        new SimpleProgressMessage(identifier, 
global, (SplitfileProgressEvent)ce);
-                               trySendProgressMessage(progress, 
VERBOSITY_SPLITFILE_PROGRESS, null);
+                               trySendProgressMessage(progress, 
VERBOSITY_SPLITFILE_PROGRESS, null, container, context);
                        }
                } else if(ce instanceof StartedCompressionEvent) {
                        if((verbosity & VERBOSITY_COMPRESSION_START_END) == 
VERBOSITY_COMPRESSION_START_END) {
                                StartedCompressionMessage msg =
                                        new 
StartedCompressionMessage(identifier, global, 
((StartedCompressionEvent)ce).codec);
-                               trySendProgressMessage(msg, 
VERBOSITY_COMPRESSION_START_END, null);
+                               trySendProgressMessage(msg, 
VERBOSITY_COMPRESSION_START_END, null, container, context);
                        }
                } else if(ce instanceof FinishedCompressionEvent) {
                        if((verbosity & VERBOSITY_COMPRESSION_START_END) == 
VERBOSITY_COMPRESSION_START_END) {
                                FinishedCompressionMessage msg = 
                                        new 
FinishedCompressionMessage(identifier, global, (FinishedCompressionEvent)ce);
-                               trySendProgressMessage(msg, 
VERBOSITY_COMPRESSION_START_END, null);
+                               trySendProgressMessage(msg, 
VERBOSITY_COMPRESSION_START_END, null, container, context);
                        }
                }
        }

-       public void onFetchable(BaseClientPutter putter) {
+       public void onFetchable(BaseClientPutter putter, ObjectContainer 
container) {
                if(finished) return;
                if((verbosity & VERBOSITY_PUT_FETCHABLE) == 
VERBOSITY_PUT_FETCHABLE) {
                        FreenetURI temp;
@@ -241,7 +243,7 @@
                        }
                        PutFetchableMessage msg =
                                new PutFetchableMessage(identifier, global, 
temp);
-                       trySendProgressMessage(msg, VERBOSITY_PUT_FETCHABLE, 
null);
+                       trySendProgressMessage(msg, VERBOSITY_PUT_FETCHABLE, 
null, container, null);
                }
        }

@@ -277,11 +279,31 @@
                        client.queueClientRequestMessage(msg, 0);
        }

-       private void trySendProgressMessage(FCPMessage msg, int verbosity, 
FCPConnectionOutputHandler handler) {
+       /**
+        * @param msg
+        * @param verbosity
+        * @param handler
+        * @param container Either container or context is required for a 
persistent request.
+        * @param context Can be null if container is not null.
+        */
+       private void trySendProgressMessage(FCPMessage msg, int verbosity, 
FCPConnectionOutputHandler handler, ObjectContainer container, ClientContext 
context) {
                synchronized(this) {
                        if(persistenceType != PERSIST_CONNECTION)
                                progressMessage = msg;
                }
+               if(persistenceType == PERSIST_FOREVER) {
+                       if(container != null) {
+                               container.set(this);
+                       } else {
+                               context.jobRunner.queue(new DBJob() {
+
+                                       public void run(ObjectContainer 
container, ClientContext context) {
+                                               
container.set(ClientPutBase.this);
+                                       }
+                                       
+                               }, NativeThread.NORM_PRIORITY, false);
+                       }
+               }
                if(handler != null)
                        handler.queue(msg);
                else

Modified: branches/db4o/freenet/src/freenet/node/updater/NodeUpdater.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/updater/NodeUpdater.java     
2008-06-20 17:35:38 UTC (rev 20532)
+++ branches/db4o/freenet/src/freenet/node/updater/NodeUpdater.java     
2008-06-20 18:06:45 UTC (rev 20533)
@@ -309,7 +309,7 @@
                return fetchedVersion > currentVersion;
        }

-       public void onFetchable(BaseClientPutter state) {
+       public void onFetchable(BaseClientPutter state, ObjectContainer 
container) {
                // Ignore, we don't insert
        }


Modified: branches/db4o/freenet/src/freenet/node/updater/RevocationChecker.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/updater/RevocationChecker.java       
2008-06-20 17:35:38 UTC (rev 20532)
+++ branches/db4o/freenet/src/freenet/node/updater/RevocationChecker.java       
2008-06-20 18:06:45 UTC (rev 20533)
@@ -235,7 +235,7 @@

        }

-       public void onFetchable(BaseClientPutter state) {
+       public void onFetchable(BaseClientPutter state, ObjectContainer 
container) {
                // TODO Auto-generated method stub

        }

Modified: 
branches/db4o/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java  
    2008-06-20 17:35:38 UTC (rev 20532)
+++ 
branches/db4o/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java  
    2008-06-20 18:06:45 UTC (rev 20533)
@@ -751,7 +751,7 @@
                                // Ignore, not possible
                        }

-                       public void onFetchable(BaseClientPutter state) {
+                       public void onFetchable(BaseClientPutter state, 
ObjectContainer container) {
                                // Irrelevant
                        }

@@ -799,7 +799,7 @@
                        public void onFailure(InsertException e, 
BaseClientPutter state, ObjectContainer container) {
                                Logger.error(this, "Failed to insert revocation 
key binary blob: "+e, e);
                        }
-                       public void onFetchable(BaseClientPutter state) {
+                       public void onFetchable(BaseClientPutter state, 
ObjectContainer container) {
                                // Ignore
                        }
                        public void onGeneratedURI(FreenetURI uri, 
BaseClientPutter state, ObjectContainer container) {
@@ -1120,7 +1120,7 @@
                                // Ignore, not possible
                        }

-                       public void onFetchable(BaseClientPutter state) {
+                       public void onFetchable(BaseClientPutter state, 
ObjectContainer container) {
                                // Irrelevant
                        }



Reply via email to