Author: toad
Date: 2006-09-29 20:35:03 +0000 (Fri, 29 Sep 2006)
New Revision: 10577

Modified:
   trunk/freenet/src/freenet/client/async/BackgroundBlockEncoder.java
   trunk/freenet/src/freenet/client/async/SingleFileInserter.java
   trunk/freenet/src/freenet/client/async/SplitFileInserter.java
   trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java
   trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.java
Log:
Fix URIGenerated / PutFetchable. Bugs in client/async/ were preventing these 
from being sent except before completion, even if the blocks *were* encoded.
Fix background block encoder.
Logging.

Modified: trunk/freenet/src/freenet/client/async/BackgroundBlockEncoder.java
===================================================================
--- trunk/freenet/src/freenet/client/async/BackgroundBlockEncoder.java  
2006-09-29 19:17:02 UTC (rev 10576)
+++ trunk/freenet/src/freenet/client/async/BackgroundBlockEncoder.java  
2006-09-29 20:35:03 UTC (rev 10577)
@@ -39,16 +39,17 @@
        }

        public void run() {
-outer: while(true) {
+               while(true) {
                        SingleBlockInserter sbi = null;
                        synchronized(this) {
-                               try {
-                                       wait(100*1000);
-                               } catch (InterruptedException e) {
-                                       // Ignore
+                               while(queue.isEmpty()) {
+                                       try {
+                                               wait(100*1000);
+                                       } catch (InterruptedException e) {
+                                               // Ignore
+                                       }
                                }
-                               while(true) {
-                                       if(queue.isEmpty()) continue outer;
+                               while(!queue.isEmpty()) {
                                        WeakReference ref = (WeakReference) 
queue.remove(queue.size()-1);
                                        sbi = (SingleBlockInserter) ref.get();
                                        if(sbi != null) break;

Modified: trunk/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileInserter.java      
2006-09-29 19:17:02 UTC (rev 10576)
+++ trunk/freenet/src/freenet/client/async/SingleFileInserter.java      
2006-09-29 20:35:03 UTC (rev 10577)
@@ -554,6 +554,8 @@

                        logMINOR = Logger.shouldLog(Logger.MINOR, this);

+                       if(logMINOR) Logger.minor(this, 
"onFetchable("+state+")");
+                       
                        boolean meta;

                        synchronized(this) {
@@ -562,6 +564,7 @@
                                        if(!metaInsertStarted) {
                                                Logger.error(this, "Metadata 
insert not started yet got onFetchable for it: "+state+" on "+this);
                                        }
+                                       if(logMINOR) Logger.minor(this, 
"Metadata fetchable"+(metaFetchable?"":" already"));
                                        if(metaFetchable) return;
                                        metaFetchable = true;
                                } else {
@@ -570,8 +573,8 @@
                                                return;
                                        }
                                        dataFetchable = true;
+                                       if(logMINOR) Logger.minor(this, "Data 
fetchable");
                                        if(metaInsertStarted) return;
-                                       metaInsertStarted = true;
                                }
                        }

@@ -586,9 +589,11 @@
                                ClientPutState putter;
                                ClientPutState splitInserter;
                                synchronized(this) {
+                                       if(metaInsertStarted) return;
                                        if(metadataPutter == null) {
                                                if(logMINOR) Logger.minor(this, 
"Cannot start metadata yet: no metadataPutter");
-                                       }
+                                       } else
+                                               metaInsertStarted = true;
                                        putter = metadataPutter;
                                        splitInserter = sfi;
                                }

Modified: trunk/freenet/src/freenet/client/async/SplitFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileInserter.java       
2006-09-29 19:17:02 UTC (rev 10576)
+++ trunk/freenet/src/freenet/client/async/SplitFileInserter.java       
2006-09-29 20:35:03 UTC (rev 10577)
@@ -438,6 +438,7 @@

        /** Force the remaining blocks which haven't been encoded so far to be 
encoded ASAP. */
        public void forceEncode() {
+               Logger.minor(this, "Forcing encode on "+this);
                for(int i=0;i<segments.length;i++) {
                        segments[i].forceEncode();
                }

Modified: trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java        
2006-09-29 19:17:02 UTC (rev 10576)
+++ trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java        
2006-09-29 20:35:03 UTC (rev 10577)
@@ -610,7 +610,7 @@
        }

        public synchronized boolean isFetchable() {
-               return blocksCompleted > dataBlocks.length;
+               return blocksCompleted >= dataBlocks.length;
        }

        public void onFetchable(ClientPutState state) {
@@ -619,7 +619,7 @@

        /** Force the remaining blocks which haven't been encoded so far to be 
encoded ASAP. */
        public void forceEncode() {
-               // TODO Auto-generated method stub
-               
+               
blockInsertContext.backgroundBlockEncoder.queue(dataBlockInserters);
+               
blockInsertContext.backgroundBlockEncoder.queue(checkBlockInserters);
        }
 }

Modified: trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.java       
2006-09-29 19:17:02 UTC (rev 10576)
+++ trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.java       
2006-09-29 20:35:03 UTC (rev 10577)
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.1 on 29/09/06 14:46 */
+/* The following code was generated by JFlex 1.4.1 on 29/09/06 20:17 */

 /* This code is part of Freenet. It is distributed under the GNU General
  * Public License, version 2 (or at your option any later version). See
@@ -14,7 +14,7 @@
 /**
  * This class is a scanner generated by 
  * <a href="http://www.jflex.de/";>JFlex</a> 1.4.1
- * on 29/09/06 14:46 from the specification file
+ * on 29/09/06 20:17 from the specification file
  * <tt>freenet/clients/http/filter/CSSTokenizerFilter.jflex</tt>
  */
 class CSSTokenizerFilter {


Reply via email to