Author: toad
Date: 2008-06-19 23:45:04 +0000 (Thu, 19 Jun 2008)
New Revision: 20508

Modified:
   branches/db4o/freenet/src/freenet/client/async/BinaryBlobInserter.java
   branches/db4o/freenet/src/freenet/client/async/ClientRequester.java
   branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java
   branches/db4o/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java
   branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
   branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
   branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
   branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java
   branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
   branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
   branches/db4o/freenet/src/freenet/client/async/USKInserter.java
Log:
async.ClientRequester: set() when updated. This may be enough to get minimal 
persistence working; the immediate blockage was that it didn't know how many 
blocks were done.

Modified: branches/db4o/freenet/src/freenet/client/async/BinaryBlobInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/BinaryBlobInserter.java      
2008-06-19 23:27:27 UTC (rev 20507)
+++ branches/db4o/freenet/src/freenet/client/async/BinaryBlobInserter.java      
2008-06-19 23:45:04 UTC (rev 20508)
@@ -65,7 +65,7 @@
                }

                inserters = (MySendableInsert[]) myInserters.toArray(new 
MySendableInsert[myInserters.size()]);
-               parent.addMustSucceedBlocks(inserters.length);
+               parent.addMustSucceedBlocks(inserters.length, container);
                parent.notifyClients(container, context);
        }


Modified: branches/db4o/freenet/src/freenet/client/async/ClientRequester.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequester.java 
2008-06-19 23:27:27 UTC (rev 20507)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequester.java 
2008-06-19 23:45:04 UTC (rev 20508)
@@ -64,20 +64,23 @@
                }
                if(Logger.shouldLog(Logger.MINOR, this))
                        Logger.minor(this, "Finalized set of blocks for "+this, 
new Exception("debug"));
+               if(persistent())
+                       container.set(this);
                notifyClients(container, context);
        }

-       public synchronized void addBlock() {
+       public synchronized void addBlock(ObjectContainer container) {
                if(blockSetFinalized)
                        if(Logger.globalGetThreshold() > Logger.MINOR)
                                Logger.error(this, "addBlock() but set 
finalized! on "+this);
                        else
                                Logger.error(this, "addBlock() but set 
finalized! on "+this, new Exception("error"));
                totalBlocks++;
-               if(Logger.shouldLog(Logger.MINOR, this)) Logger.minor(this, 
"addBlock(): total="+totalBlocks+" successful="+successfulBlocks+" 
failed="+failedBlocks+" required="+minSuccessBlocks); 
+               if(Logger.shouldLog(Logger.MINOR, this)) Logger.minor(this, 
"addBlock(): total="+totalBlocks+" successful="+successfulBlocks+" 
failed="+failedBlocks+" required="+minSuccessBlocks);
+               if(persistent()) container.set(this);
        }

-       public synchronized void addBlocks(int num) {
+       public synchronized void addBlocks(int num, ObjectContainer container) {
                if(blockSetFinalized)
                        if(Logger.globalGetThreshold() > Logger.MINOR)
                                Logger.error(this, "addBlocks() but set 
finalized! on "+this);
@@ -85,6 +88,7 @@
                                Logger.error(this, "addBlocks() but set 
finalized! on "+this, new Exception("error"));
                totalBlocks+=num;
                if(Logger.shouldLog(Logger.MINOR, this)) Logger.minor(this, 
"addBlocks("+num+"): total="+totalBlocks+" successful="+successfulBlocks+" 
failed="+failedBlocks+" required="+minSuccessBlocks); 
+               if(persistent()) container.set(this);
        }

        public void completedBlock(boolean dontNotify, ObjectContainer 
container, ClientContext context) {
@@ -94,6 +98,7 @@
                        successfulBlocks++;
                        if(dontNotify) return;
                }
+               if(persistent()) container.set(this);
                notifyClients(container, context);
        }

@@ -101,6 +106,7 @@
                synchronized(this) {
                        failedBlocks++;
                }
+               if(persistent()) container.set(this);
                notifyClients(container, context);
        }

@@ -108,11 +114,13 @@
                synchronized(this) {
                        fatallyFailedBlocks++;
                }
+               if(persistent()) container.set(this);
                notifyClients(container, context);
        }

-       public synchronized void addMustSucceedBlocks(int blocks) {
+       public synchronized void addMustSucceedBlocks(int blocks, 
ObjectContainer container) {
                minSuccessBlocks += blocks;
+               if(persistent()) container.set(this);
                if(Logger.shouldLog(Logger.MINOR, this)) Logger.minor(this, 
"addMustSucceedBlocks("+blocks+"): total="+totalBlocks+" 
successful="+successfulBlocks+" failed="+failedBlocks+" 
required="+minSuccessBlocks); 
        }

@@ -129,6 +137,7 @@
                ctx.getChkInsertScheduler().reregisterAll(this, container);
                ctx.getSskFetchScheduler().reregisterAll(this, container);
                ctx.getSskInsertScheduler().reregisterAll(this, container);
+               if(persistent()) container.set(this);
        }

        public boolean persistent() {

Modified: 
branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java    
2008-06-19 23:27:27 UTC (rev 20507)
+++ branches/db4o/freenet/src/freenet/client/async/SimpleManifestPutter.java    
2008-06-19 23:45:04 UTC (rev 20508)
@@ -132,12 +132,12 @@
                        gotAllMetadata(container, context);
                }

-               public void addBlock() {
-                       SimpleManifestPutter.this.addBlock();
+               public void addBlock(ObjectContainer container) {
+                       SimpleManifestPutter.this.addBlock(container);
                }

-               public void addBlocks(int num) {
-                       SimpleManifestPutter.this.addBlocks(num);
+               public void addBlocks(int num, ObjectContainer container) {
+                       SimpleManifestPutter.this.addBlocks(num, container);
                }

                public void completedBlock(boolean dontNotify, ObjectContainer 
container, ClientContext context) {
@@ -152,8 +152,8 @@
                        SimpleManifestPutter.this.fatallyFailedBlock(container, 
context);
                }

-               public void addMustSucceedBlocks(int blocks) {
-                       SimpleManifestPutter.this.addMustSucceedBlocks(blocks);
+               public void addMustSucceedBlocks(int blocks, ObjectContainer 
container) {
+                       SimpleManifestPutter.this.addMustSucceedBlocks(blocks, 
container);
                }

                public void notifyClients(ObjectContainer container, 
ClientContext context) {

Modified: 
branches/db4o/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java 
2008-06-19 23:27:27 UTC (rev 20507)
+++ branches/db4o/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java 
2008-06-19 23:45:04 UTC (rev 20508)
@@ -32,9 +32,9 @@
                this.rcb = rcb;
                this.token = l;
                if(!dontAdd) {
-                       parent.addBlock();
+                       parent.addBlock(container);
                        if(isEssential)
-                               parent.addMustSucceedBlocks(1);
+                               parent.addMustSucceedBlocks(1, container);
                        parent.notifyClients(container, context);
                }
        }

Modified: 
branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java     
2008-06-19 23:27:27 UTC (rev 20507)
+++ branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java     
2008-06-19 23:45:04 UTC (rev 20508)
@@ -75,8 +75,8 @@
                this.sourceLength = sourceLength;
                this.getCHKOnly = getCHKOnly;
                if(addToParent) {
-                       parent.addBlock();
-                       parent.addMustSucceedBlocks(1);
+                       parent.addBlock(container);
+                       parent.addMustSucceedBlocks(1, container);
                        parent.notifyClients(container, context);
                }
                logMINOR = Logger.shouldLog(Logger.MINOR, this);

Modified: branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java       
2008-06-19 23:27:27 UTC (rev 20507)
+++ branches/db4o/freenet/src/freenet/client/async/SingleFileFetcher.java       
2008-06-19 23:45:04 UTC (rev 20508)
@@ -762,7 +762,7 @@
                                
context.uskManager.getFetcher(usk.copy(-usk.suggestedEdition), ctx, false, 
requester.persistent(),
                                                new 
MyUSKFetcherCallback(requester, cb, clientMetadata, usk, metaStrings, ctx, 
actx, maxRetries, recursionLevel, dontTellClientGet, l, returnBucket), 
container, context);
                        if(isEssential)
-                               requester.addMustSucceedBlocks(1);
+                               requester.addMustSucceedBlocks(1, container);
                        return tag;
                }
        }

Modified: branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java      
2008-06-19 23:27:27 UTC (rev 20507)
+++ branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java      
2008-06-19 23:45:04 UTC (rev 20508)
@@ -94,7 +94,7 @@
                                // If we succeed, we bypass both compression 
and FEC encoding!
                                try {
                                        SplitHandler sh = new SplitHandler();
-                                       sh.start(fs, false, context);
+                                       sh.start(fs, false, container, context);
                                        cb.onTransition(this, sh, container);
                                        sh.schedule(container, context);
                                        return;
@@ -341,7 +341,7 @@
                 * @throws InsertException Thrown if some other error prevents 
the insert
                 * from starting.
                 */
-               void start(SimpleFieldSet fs, boolean forceMetadata, 
ClientContext context) throws ResumeException, InsertException {
+               void start(SimpleFieldSet fs, boolean forceMetadata, 
ObjectContainer container, ClientContext context) throws ResumeException, 
InsertException {

                        boolean meta = metadata || forceMetadata;

@@ -351,7 +351,7 @@
                        if(sfiFS == null)
                                throw new ResumeException("No 
SplitFileInserter");
                        ClientPutState newSFI, newMetaPutter = null;
-                       newSFI = new SplitFileInserter(parent, this, 
forceMetadata ? null : block.clientMetadata, ctx, getCHKOnly, meta, token, 
insertAsArchiveManifest, sfiFS, context);
+                       newSFI = new SplitFileInserter(parent, this, 
forceMetadata ? null : block.clientMetadata, ctx, getCHKOnly, meta, token, 
insertAsArchiveManifest, sfiFS, container, context);
                        if(logMINOR) Logger.minor(this, "Starting "+newSFI+" 
for "+this);
                        fs.removeSubset("SplitFileInserter");
                        SimpleFieldSet metaFS = fs.subset("MetadataPutter");
@@ -361,10 +361,10 @@
                                        if(type.equals("SplitFileInserter")) {
                                                // FIXME 
insertAsArchiveManifest ?!?!?!
                                                newMetaPutter = 
-                                                       new 
SplitFileInserter(parent, this, null, ctx, getCHKOnly, true, token, 
insertAsArchiveManifest, metaFS, context);
+                                                       new 
SplitFileInserter(parent, this, null, ctx, getCHKOnly, true, token, 
insertAsArchiveManifest, metaFS, container, context);
                                        } else if(type.equals("SplitHandler")) {
                                                newMetaPutter = new 
SplitHandler();
-                                               
((SplitHandler)newMetaPutter).start(metaFS, true, context);
+                                               
((SplitHandler)newMetaPutter).start(metaFS, true, container, context);
                                        }
                                } catch (ResumeException e) {
                                        newMetaPutter = null;

Modified: branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java        
2008-06-19 23:27:27 UTC (rev 20507)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java        
2008-06-19 23:45:04 UTC (rev 20508)
@@ -168,8 +168,8 @@
                                throw new 
FetchException(FetchException.INVALID_METADATA, "Unable to allocate all check 
blocks to segments - buggy or malicious inserter");
                }
                this.token = token2;
-               parent.addBlocks(splitfileDataBlocks.length + 
splitfileCheckBlocks.length);
-               parent.addMustSucceedBlocks(splitfileDataBlocks.length);
+               parent.addBlocks(splitfileDataBlocks.length + 
splitfileCheckBlocks.length, container);
+               parent.addMustSucceedBlocks(splitfileDataBlocks.length, 
container);
        }

        /** Return the final status of the fetch. Throws an exception, or 
returns a 

Modified: branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java       
2008-06-19 23:27:27 UTC (rev 20507)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java       
2008-06-19 23:45:04 UTC (rev 20508)
@@ -109,7 +109,7 @@
                parent.onMajorProgress();
        }

-       public SplitFileInserter(BaseClientPutter parent, PutCompletionCallback 
cb, ClientMetadata clientMetadata, InsertContext ctx, boolean getCHKOnly, 
boolean metadata, Object token, boolean insertAsArchiveManifest, SimpleFieldSet 
fs, ClientContext context) throws ResumeException {
+       public SplitFileInserter(BaseClientPutter parent, PutCompletionCallback 
cb, ClientMetadata clientMetadata, InsertContext ctx, boolean getCHKOnly, 
boolean metadata, Object token, boolean insertAsArchiveManifest, SimpleFieldSet 
fs, ObjectContainer container, ClientContext context) throws ResumeException {
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                this.parent = parent;
                this.insertAsArchiveManifest = insertAsArchiveManifest;
@@ -186,7 +186,7 @@
                        SimpleFieldSet segment = segFS.subset(index);
                        segFS.removeSubset(index);
                        if(segment == null) throw new ResumeException("No 
segment "+i);
-                       segments[i] = new SplitFileInserterSegment(this, 
segment, splitfileAlgorithm, ctx, getCHKOnly, i, context);
+                       segments[i] = new SplitFileInserterSegment(this, 
segment, splitfileAlgorithm, ctx, getCHKOnly, i, context, container);
                        dataBlocks += segments[i].countDataBlocks();
                        checkBlocks += segments[i].countCheckBlocks();
                }
@@ -207,7 +207,7 @@
                if((dataBlocks < segmentSize) || (segmentSize == -1)) {
                        // Single segment
                        FECCodec codec = FECCodec.getCodec(splitfileAlgorithm, 
origDataBlocks.length, executor);
-                       SplitFileInserterSegment onlySeg = new 
SplitFileInserterSegment(this, codec, origDataBlocks, ctx, getCHKOnly, 0);
+                       SplitFileInserterSegment onlySeg = new 
SplitFileInserterSegment(this, codec, origDataBlocks, ctx, getCHKOnly, 0, 
container);
                        segs.add(onlySeg);
                } else {
                        int j = 0;
@@ -220,7 +220,7 @@
                                for(int x=0;x<seg.length;x++)
                                        if(seg[x] == null) throw new 
NullPointerException("In splitIntoSegs: "+x+" is null of "+seg.length+" of 
"+segNo);
                                FECCodec codec = 
FECCodec.getCodec(splitfileAlgorithm, seg.length, executor);
-                               SplitFileInserterSegment s = new 
SplitFileInserterSegment(this, codec, seg, ctx, getCHKOnly, segNo);
+                               SplitFileInserterSegment s = new 
SplitFileInserterSegment(this, codec, seg, ctx, getCHKOnly, segNo, container);
                                segs.add(s);

                                if(i == dataBlocks) break;

Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java    
    2008-06-19 23:27:27 UTC (rev 20507)
+++ 
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java    
    2008-06-19 23:45:04 UTC (rev 20508)
@@ -68,7 +68,7 @@

        public SplitFileInserterSegment(SplitFileInserter parent,
                        FECCodec splitfileAlgo, Bucket[] origDataBlocks,
-                       InsertContext blockInsertContext, boolean getCHKOnly, 
int segNo) {
+                       InsertContext blockInsertContext, boolean getCHKOnly, 
int segNo, ObjectContainer container) {
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                this.parent = parent;
                this.getCHKOnly = getCHKOnly;
@@ -83,8 +83,8 @@
                dataURIs = new ClientCHK[origDataBlocks.length];
                dataBlockInserters = new SingleBlockInserter[dataBlocks.length];
                checkBlockInserters = new 
SingleBlockInserter[checkBlocks.length];
-               parent.parent.addBlocks(dataURIs.length + checkURIs.length);
-               parent.parent.addMustSucceedBlocks(dataURIs.length + 
checkURIs.length);
+               parent.parent.addBlocks(dataURIs.length + checkURIs.length, 
container);
+               parent.parent.addMustSucceedBlocks(dataURIs.length + 
checkURIs.length, container);
                this.segNo = segNo;
        }

@@ -95,7 +95,7 @@
         */
        public SplitFileInserterSegment(SplitFileInserter parent,
                        SimpleFieldSet fs, short splitfileAlgorithm, 
InsertContext ctx,
-                       boolean getCHKOnly, int segNo, ClientContext context) 
throws ResumeException {
+                       boolean getCHKOnly, int segNo, ClientContext context, 
ObjectContainer container) throws ResumeException {
                this.parent = parent;
                this.getCHKOnly = getCHKOnly;
                this.blockInsertContext = ctx;
@@ -310,8 +310,8 @@
                                        throw new ResumeException("Missing data 
block " + i
                                                        + " and need to 
reconstruct check blocks");
                }
-               parent.parent.addBlocks(dataURIs.length + checkURIs.length);
-               parent.parent.addMustSucceedBlocks(dataURIs.length + 
checkURIs.length);
+               parent.parent.addBlocks(dataURIs.length + checkURIs.length, 
container);
+               parent.parent.addMustSucceedBlocks(dataURIs.length + 
checkURIs.length, container);
        }

        public synchronized SimpleFieldSet getProgressFieldset() {

Modified: branches/db4o/freenet/src/freenet/client/async/USKInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/USKInserter.java     
2008-06-19 23:27:27 UTC (rev 20507)
+++ branches/db4o/freenet/src/freenet/client/async/USKInserter.java     
2008-06-19 23:45:04 UTC (rev 20508)
@@ -109,7 +109,7 @@
                if(alreadyInserted) {
                        // Success!
                        cb.onEncode(pubUSK.copy(edition), this, container, 
context);
-                       parent.addMustSucceedBlocks(1);
+                       parent.addMustSucceedBlocks(1, container);
                        parent.completedBlock(true, container, context);
                        cb.onSuccess(this, container, context);
                } else {
@@ -179,8 +179,8 @@
                this.token = token;
                this.getCHKOnly = getCHKOnly;
                if(addToParent) {
-                       parent.addBlock();
-                       parent.addMustSucceedBlocks(1);
+                       parent.addBlock(container);
+                       parent.addMustSucceedBlocks(1, container);
                        parent.notifyClients(container, context);
                }
                privUSK = InsertableUSK.createInsertable(uri);


Reply via email to