Author: toad
Date: 2006-10-04 18:41:49 +0000 (Wed, 04 Oct 2006)
New Revision: 10599

Modified:
   trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java
   trunk/freenet/src/freenet/client/async/BackgroundBlockEncoder.java
   trunk/freenet/src/freenet/client/async/ClientPutter.java
   trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java
   trunk/freenet/src/freenet/client/async/SingleFileInserter.java
   trunk/freenet/src/freenet/client/async/SplitFileInserter.java
   trunk/freenet/src/freenet/clients/http/QueueToadlet.java
   trunk/freenet/src/freenet/node/NodeARKInserter.java
   trunk/freenet/src/freenet/node/fcp/ClientPut.java
   trunk/freenet/src/freenet/node/fcp/ClientPutBase.java
   trunk/freenet/src/freenet/node/fcp/ClientPutDir.java
   trunk/freenet/src/freenet/node/fcp/ClientPutDirMessage.java
   trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java
Log:
EarlyEncode option.

Modified: trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java
===================================================================
--- trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java     
2006-10-04 12:14:30 UTC (rev 10598)
+++ trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java     
2006-10-04 18:41:49 UTC (rev 10599)
@@ -132,7 +132,7 @@
                PutWaiter pw = new PutWaiter();
                ClientPutter put = new ClientPutter(pw, insert.getData(), 
insert.desiredURI, insert.clientMetadata, 
                                context, core.requestStarters.chkPutScheduler, 
core.requestStarters.sskPutScheduler, priorityClass, getCHKOnly, isMetadata, 
this, null, filenameHint);
-               put.start();
+               put.start(false);
                return pw.waitForCompletion();
        }

@@ -156,7 +156,7 @@
        public FreenetURI insertManifest(FreenetURI insertURI, HashMap 
bucketsByName, String defaultName) throws InserterException {
                PutWaiter pw = new PutWaiter();
                SimpleManifestPutter putter =
-                       new SimpleManifestPutter(pw, 
core.requestStarters.chkPutScheduler, core.requestStarters.sskPutScheduler, 
SimpleManifestPutter.bucketsByNameToManifestEntries(bucketsByName), 
priorityClass, insertURI, defaultName, getInserterContext(true), false, this);
+                       new SimpleManifestPutter(pw, 
core.requestStarters.chkPutScheduler, core.requestStarters.sskPutScheduler, 
SimpleManifestPutter.bucketsByNameToManifestEntries(bucketsByName), 
priorityClass, insertURI, defaultName, getInserterContext(true), false, this, 
false);
                putter.start();
                return pw.waitForCompletion();
        }

Modified: trunk/freenet/src/freenet/client/async/BackgroundBlockEncoder.java
===================================================================
--- trunk/freenet/src/freenet/client/async/BackgroundBlockEncoder.java  
2006-10-04 12:14:30 UTC (rev 10598)
+++ trunk/freenet/src/freenet/client/async/BackgroundBlockEncoder.java  
2006-10-04 18:41:49 UTC (rev 10599)
@@ -3,6 +3,8 @@
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;

+import freenet.support.Logger;
+
 /**
  * Keeps a queue of SingleBlockInserter's to encode.
  * Encodes them.
@@ -22,6 +24,7 @@
                WeakReference ref = new WeakReference(sbi);
                synchronized(this) {
                        queue.add(ref);
+                       Logger.minor(this, "Queueing encode of "+sbi);
                        notifyAll();
                }
        }
@@ -32,6 +35,7 @@
                                if(sbis[i] == null) continue;
                                if(sbis[i].isFinished()) continue;
                                if(sbis[i].resultingURI != null) continue;
+                               Logger.minor(this, "Queueing encode of 
"+sbis[i]);
                                WeakReference ref = new WeakReference(sbis[i]);
                                queue.add(ref);
                        }
@@ -56,6 +60,7 @@
                                        if(sbi != null) break;
                                }
                        }
+                       Logger.minor(this, "Encoding "+sbi);
                        if(sbi.isFinished()) continue;
                        if(sbi.resultingURI != null) continue;
                        sbi.tryEncode();

Modified: trunk/freenet/src/freenet/client/async/ClientPutter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientPutter.java    2006-10-04 
12:14:30 UTC (rev 10598)
+++ trunk/freenet/src/freenet/client/async/ClientPutter.java    2006-10-04 
18:41:49 UTC (rev 10599)
@@ -62,11 +62,11 @@
                this.targetFilename = targetFilename;
        }

-       public void start() throws InserterException {
-               start(false);
+       public void start(boolean earlyEncode) throws InserterException {
+               start(earlyEncode, false);
        }

-       public boolean start(boolean restart) throws InserterException {
+       public boolean start(boolean earlyEncode, boolean restart) throws 
InserterException {
                if(Logger.shouldLog(Logger.MINOR, this))
                        Logger.minor(this, "Starting "+this);
                try {
@@ -86,7 +86,7 @@
                                cancel = this.cancelled;
                                if(!cancel) {
                                        currentState =
-                                               new SingleFileInserter(this, 
this, new InsertBlock(data, cm, targetURI), isMetadata, ctx, false, getCHKOnly, 
false, null, false, false, targetFilename);
+                                               new SingleFileInserter(this, 
this, new InsertBlock(data, cm, targetURI), isMetadata, ctx, false, getCHKOnly, 
false, null, false, false, targetFilename, earlyEncode);
                                }
                        }
                        if(cancel) {
@@ -224,8 +224,8 @@
                return true;
        }

-       public boolean restart() throws InserterException {
-               return start(true);
+       public boolean restart(boolean earlyEncode) throws InserterException {
+               return start(earlyEncode, true);
        }
-       
+
 }

Modified: trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java    
2006-10-04 12:14:30 UTC (rev 10598)
+++ trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java    
2006-10-04 18:41:49 UTC (rev 10599)
@@ -37,7 +37,7 @@
                        InsertBlock block = 
                                new InsertBlock(data, cm, 
FreenetURI.EMPTY_CHK_URI);
                        this.origSFI =
-                               new SingleFileInserter(this, this, block, 
false, ctx, false, getCHKOnly, true, null, false, false, null);
+                               new SingleFileInserter(this, this, block, 
false, ctx, false, getCHKOnly, true, null, false, false, null, earlyEncode);
                        metadata = null;
                }

@@ -202,10 +202,11 @@
        private int bytesOnZip;
        private LinkedList elementsToPutInZip;
        private boolean fetchable;
+       private final boolean earlyEncode;

        public SimpleManifestPutter(ClientCallback cb, ClientRequestScheduler 
chkSched,
                        ClientRequestScheduler sskSched, HashMap 
manifestElements, short prioClass, FreenetURI target, 
-                       String defaultName, InserterContext ctx, boolean 
getCHKOnly, Object clientContext) throws InserterException {
+                       String defaultName, InserterContext ctx, boolean 
getCHKOnly, Object clientContext, boolean earlyEncode) throws InserterException 
{
                super(prioClass, chkSched, sskSched, clientContext);
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                this.defaultName = defaultName;
@@ -213,6 +214,7 @@
                this.cb = cb;
                this.ctx = ctx;
                this.getCHKOnly = getCHKOnly;
+               this.earlyEncode = earlyEncode;
                putHandlersByName = new HashMap();
                runningPutHandlers = new HashSet();
                putHandlersWaitingForMetadata = new HashSet();
@@ -432,7 +434,7 @@
                        block = new InsertBlock(bucket, null, targetURI);
                try {
                        SingleFileInserter metadataInserter = 
-                               new SingleFileInserter(this, this, block, 
isMetadata, ctx, false, getCHKOnly, false, baseMetadata, 
insertAsArchiveManifest, true, null);
+                               new SingleFileInserter(this, this, block, 
isMetadata, ctx, false, getCHKOnly, false, baseMetadata, 
insertAsArchiveManifest, true, null, earlyEncode);
                        if(logMINOR) Logger.minor(this, "Inserting main 
metadata: "+metadataInserter);
                        this.metadataPuttersByMetadata.put(baseMetadata, 
metadataInserter);
                        metadataPuttersUnfetchable.put(baseMetadata, 
metadataInserter);
@@ -457,7 +459,7 @@

                                InsertBlock ib = new InsertBlock(b, null, 
FreenetURI.EMPTY_CHK_URI);
                                SingleFileInserter metadataInserter = 
-                                       new SingleFileInserter(this, this, ib, 
true, ctx, false, getCHKOnly, false, m, false, true, null);
+                                       new SingleFileInserter(this, this, ib, 
true, ctx, false, getCHKOnly, false, m, false, true, null, earlyEncode);
                                if(logMINOR) Logger.minor(this, "Inserting 
subsidiary metadata: "+metadataInserter+" for "+m);
                                synchronized(this) {
                                        this.metadataPuttersByMetadata.put(m, 
metadataInserter);

Modified: trunk/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileInserter.java      
2006-10-04 12:14:30 UTC (rev 10598)
+++ trunk/freenet/src/freenet/client/async/SingleFileInserter.java      
2006-10-04 18:41:49 UTC (rev 10599)
@@ -49,6 +49,7 @@
        public final Object token;
        private final boolean freeData; // this is being set, but never read ???
        private final String targetFilename;
+       private final boolean earlyEncode;

        /**
         * @param parent
@@ -62,12 +63,14 @@
         * @param insertAsArchiveManifest If true, insert the metadata as an 
archive manifest.
         * @param freeData If true, free the data when possible.
         * @param targetFilename 
+        * @param earlyEncode If true, try to get a URI as quickly as possible.
         * @throws InserterException
         */
        SingleFileInserter(BaseClientPutter parent, PutCompletionCallback cb, 
InsertBlock block, 
                        boolean metadata, InserterContext ctx, boolean 
dontCompress, 
                        boolean getCHKOnly, boolean reportMetadataOnly, Object 
token, boolean insertAsArchiveManifest, 
-                       boolean freeData, String targetFilename) throws 
InserterException {
+                       boolean freeData, String targetFilename, boolean 
earlyEncode) throws InserterException {
+               this.earlyEncode = earlyEncode;
                this.reportMetadataOnly = reportMetadataOnly;
                this.token = token;
                this.parent = parent;
@@ -253,12 +256,14 @@
                        SplitFileInserter sfi = new SplitFileInserter(parent, 
cb, data, bestCodec, block.clientMetadata, ctx, getCHKOnly, metadata, token, 
insertAsArchiveManifest, false);
                        cb.onTransition(this, sfi);
                        sfi.start();
+                       if(earlyEncode) sfi.forceEncode();
                } else {
                        SplitHandler sh = new SplitHandler();
                        SplitFileInserter sfi = new SplitFileInserter(parent, 
sh, data, bestCodec, block.clientMetadata, ctx, getCHKOnly, metadata, token, 
insertAsArchiveManifest, false);
                        sh.sfi = sfi;
                        cb.onTransition(this, sh);
                        sfi.start();
+                       if(earlyEncode) sfi.forceEncode();
                }
        }

@@ -286,11 +291,15 @@
                                throw new 
InserterException(InserterException.INVALID_URI, e, null);
                        }
                } else {
-                       return new SingleBlockInserter(parent, data, 
compressionCodec, uri, ctx, cb, isMetadata, sourceLength, token, 
-                               getCHKOnly, addToParent, false, this.token);
+                       SingleBlockInserter sbi = 
+                               new SingleBlockInserter(parent, data, 
compressionCodec, uri, ctx, cb, isMetadata, sourceLength, token, 
+                                               getCHKOnly, addToParent, false, 
this.token);
+                       cb.onEncode(sbi.getBlock().getClientKey(), this);
+                       return sbi;
                }
+               
        }
-
+       
        /**
         * When we get the metadata, start inserting it to our target key.
         * When we have inserted both the metadata and the splitfile,
@@ -480,8 +489,10 @@
                        InsertBlock newBlock = new InsertBlock(metadataBucket, 
null, block.desiredURI);
                        try {
                                synchronized(this) {
-                                       metadataPutter = new 
SingleFileInserter(parent, this, newBlock, true, ctx, false, getCHKOnly, false, 
token, false, true, metaPutterTargetFilename);
-                                       if(!dataFetchable) return;
+                                       metadataPutter = new 
SingleFileInserter(parent, this, newBlock, true, ctx, false, getCHKOnly, false, 
token, false, true, metaPutterTargetFilename, earlyEncode);
+                                       // If EarlyEncode, then start the 
metadata insert ASAP, to get the key.
+                                       // Otherwise, wait until the data is 
fetchable (to improve persistence).
+                                       if(!(dataFetchable || earlyEncode)) 
return;
                                }
                                if(logMINOR) Logger.minor(this, "Putting 
metadata on "+metadataPutter+" from "+sfi+" 
("+((SplitFileInserter)sfi).getLength()+")");
                        } catch (InserterException e1) {

Modified: trunk/freenet/src/freenet/client/async/SplitFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileInserter.java       
2006-10-04 12:14:30 UTC (rev 10598)
+++ trunk/freenet/src/freenet/client/async/SplitFileInserter.java       
2006-10-04 18:41:49 UTC (rev 10599)
@@ -42,6 +42,7 @@
        private boolean fetchable;
        public final Object token;
        final boolean insertAsArchiveManifest;
+       private boolean forceEncode;

        public SimpleFieldSet getProgressFieldset() {
                SimpleFieldSet fs = new SimpleFieldSet();
@@ -228,12 +229,19 @@

        public void encodedSegment(SplitFileInserterSegment segment) {
                if(logMINOR) Logger.minor(this, "Encoded segment 
"+segment.segNo+" of "+this);
+               boolean ret = false;
+               boolean encode;
                synchronized(this) {
+                       encode = forceEncode;
                        for(int i=0;i<segments.length;i++) {
-                               if((segments[i] == null) || 
!segments[i].isEncoded())
-                                       return;
+                               if((segments[i] == null) || 
!segments[i].isEncoded()) {
+                                       ret = true;
+                                       break;
+                               }
                        }
                }
+               if(encode) segment.forceEncode();
+               if(ret) return;
                cb.onBlockSetFinished(this);
                if(countDataBlocks > 32)
                        parent.onMajorProgress();
@@ -439,6 +447,9 @@
        /** 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);
+               synchronized(this) {
+                       forceEncode = true;
+               }
                for(int i=0;i<segments.length;i++) {
                        segments[i].forceEncode();
                }

Modified: trunk/freenet/src/freenet/clients/http/QueueToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/QueueToadlet.java    2006-10-04 
12:14:30 UTC (rev 10598)
+++ trunk/freenet/src/freenet/clients/http/QueueToadlet.java    2006-10-04 
18:41:49 UTC (rev 10599)
@@ -193,7 +193,7 @@
                                Bucket copiedBucket = 
core.persistentEncryptedTempBucketFactory.makeBucket(file.getData().size());
                                BucketTools.copy(file.getData(), copiedBucket);
                                try {
-                                       ClientPut clientPut = new 
ClientPut(fcp.getGlobalClient(), insertURI, identifier, Integer.MAX_VALUE, 
RequestStarter.BULK_SPLITFILE_PRIORITY_CLASS, ClientRequest.PERSIST_FOREVER, 
null, false, !compress, -1, ClientPutMessage.UPLOAD_FROM_DIRECT, null, 
file.getContentType(), copiedBucket, null, fnam);
+                                       ClientPut clientPut = new 
ClientPut(fcp.getGlobalClient(), insertURI, identifier, Integer.MAX_VALUE, 
RequestStarter.BULK_SPLITFILE_PRIORITY_CLASS, ClientRequest.PERSIST_FOREVER, 
null, false, !compress, -1, ClientPutMessage.UPLOAD_FROM_DIRECT, null, 
file.getContentType(), copiedBucket, null, fnam, false);
                                        clientPut.start();
                                        fcp.forceStorePersistentRequests();
                                } catch (IdentifierCollisionException e) {
@@ -207,7 +207,7 @@
                                String identifier = file.getName() + "-fred-" + 
System.currentTimeMillis();
                                String contentType = 
DefaultMIMETypes.guessMIMEType(filename, false);
                                try {
-                                       ClientPut clientPut = new 
ClientPut(fcp.getGlobalClient(), new FreenetURI("CHK@"), identifier, 
Integer.MAX_VALUE, RequestStarter.BULK_SPLITFILE_PRIORITY_CLASS, 
ClientRequest.PERSIST_FOREVER, null, false, false, -1, 
ClientPutMessage.UPLOAD_FROM_DISK, file, contentType, new FileBucket(file, 
true, false, false, false), null, file.getName());
+                                       ClientPut clientPut = new 
ClientPut(fcp.getGlobalClient(), new FreenetURI("CHK@"), identifier, 
Integer.MAX_VALUE, RequestStarter.BULK_SPLITFILE_PRIORITY_CLASS, 
ClientRequest.PERSIST_FOREVER, null, false, false, -1, 
ClientPutMessage.UPLOAD_FROM_DISK, file, contentType, new FileBucket(file, 
true, false, false, false), null, file.getName(), false);
                                        clientPut.start();
                                        fcp.forceStorePersistentRequests();
                                } catch (IdentifierCollisionException e) {

Modified: trunk/freenet/src/freenet/node/NodeARKInserter.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeARKInserter.java 2006-10-04 12:14:30 UTC 
(rev 10598)
+++ trunk/freenet/src/freenet/node/NodeARKInserter.java 2006-10-04 18:41:49 UTC 
(rev 10599)
@@ -138,7 +138,7 @@

                try {

-                       inserter.start();
+                       inserter.start(false);

                        synchronized (this) {
                                if(fs.get("physical.udp") == null)

Modified: trunk/freenet/src/freenet/node/fcp/ClientPut.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPut.java   2006-10-04 12:14:30 UTC 
(rev 10598)
+++ trunk/freenet/src/freenet/node/fcp/ClientPut.java   2006-10-04 18:41:49 UTC 
(rev 10599)
@@ -13,6 +13,7 @@
 import freenet.client.MetadataUnresolvedException;
 import freenet.client.async.ClientPutter;
 import freenet.keys.FreenetURI;
+import freenet.support.Fields;
 import freenet.support.HexUtil;
 import freenet.support.Logger;
 import freenet.support.SimpleFieldSet;
@@ -79,8 +80,8 @@
        public ClientPut(FCPClient globalClient, FreenetURI uri, String 
identifier, int verbosity, 
                        short priorityClass, short persistenceType, String 
clientToken, boolean getCHKOnly,
                        boolean dontCompress, int maxRetries, short 
uploadFromType, File origFilename, String contentType,
-                       Bucket data, FreenetURI redirectTarget, String 
targetFilename) throws IdentifierCollisionException {
-               super(uri, identifier, verbosity, null, globalClient, 
priorityClass, persistenceType, null, true, getCHKOnly, dontCompress, 
maxRetries);
+                       Bucket data, FreenetURI redirectTarget, String 
targetFilename, boolean earlyEncode) throws IdentifierCollisionException {
+               super(uri, identifier, verbosity, null, globalClient, 
priorityClass, persistenceType, null, true, getCHKOnly, dontCompress, 
maxRetries, earlyEncode);
                this.targetFilename = targetFilename;
                this.uploadFrom = uploadFromType;
                this.origFilename = origFilename;
@@ -129,7 +130,7 @@
        public ClientPut(FCPConnectionHandler handler, ClientPutMessage 
message) throws IdentifierCollisionException {
                super(message.uri, message.identifier, message.verbosity, 
handler, 
                                message.priorityClass, message.persistenceType, 
message.clientToken, message.global,
-                               message.getCHKOnly, message.dontCompress, 
message.maxRetries);
+                               message.getCHKOnly, message.dontCompress, 
message.maxRetries, message.earlyEncode);
                this.targetFilename = message.targetFilename;
                boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
                this.uploadFrom = message.uploadFromType;
@@ -277,7 +278,7 @@
                        Logger.minor(this, "Starting "+this+" : "+identifier);
                if(finished) return;
                try {
-                       putter.start();
+                       putter.start(earlyEncode);
                        started = true;
                        if(persistenceType != PERSIST_CONNECTION && !finished) {
                                FCPMessage msg = persistentTagMessage();
@@ -319,6 +320,7 @@
                }
                if(targetFilename != null)
                        fs.put("TargetFilename", targetFilename);
+               fs.put("EarlyEncode", Boolean.toString(earlyEncode));
                return fs;
        }

@@ -381,7 +383,7 @@
                if(!canRestart()) return false;
                setVarsRestart();
                try {
-                       if(putter.restart()) {
+                       if(putter.restart(earlyEncode)) {
                                synchronized(this) {
                                        generatedURI = null;
                                        started = true;

Modified: trunk/freenet/src/freenet/node/fcp/ClientPutBase.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutBase.java       2006-10-04 
12:14:30 UTC (rev 10598)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutBase.java       2006-10-04 
18:41:49 UTC (rev 10599)
@@ -48,27 +48,32 @@
        // Probably saving it would conflict with later changes (full 
persistence at
        // ClientPutter level).
        private FCPMessage progressMessage;
+
+       /** Whether to force an early generation of the CHK */
+       protected final boolean earlyEncode;

        public ClientPutBase(FreenetURI uri, String identifier, int verbosity, 
FCPConnectionHandler handler, 
                        short priorityClass, short persistenceType, String 
clientToken, boolean global, boolean getCHKOnly,
-                       boolean dontCompress, int maxRetries) {
+                       boolean dontCompress, int maxRetries, boolean 
earlyEncode) {
                super(uri, identifier, verbosity, handler, priorityClass, 
persistenceType, clientToken, global);
                this.getCHKOnly = getCHKOnly;
                ctx = new InserterContext(client.defaultInsertContext, new 
SimpleEventProducer(), persistenceType == ClientRequest.PERSIST_CONNECTION);
                ctx.dontCompress = dontCompress;
                ctx.eventProducer.addEventListener(this);
                ctx.maxInsertRetries = maxRetries;
+               this.earlyEncode = earlyEncode;
        }

        public ClientPutBase(FreenetURI uri, String identifier, int verbosity, 
FCPConnectionHandler handler,
                        FCPClient client, short priorityClass, short 
persistenceType, String clientToken, boolean global,
-                       boolean getCHKOnly, boolean dontCompress, int 
maxRetries) {
+                       boolean getCHKOnly, boolean dontCompress, int 
maxRetries, boolean earlyEncode) {
                super(uri, identifier, verbosity, handler, client, 
priorityClass, persistenceType, clientToken, global);
                this.getCHKOnly = getCHKOnly;
                ctx = new InserterContext(client.defaultInsertContext, new 
SimpleEventProducer(), persistenceType == ClientRequest.PERSIST_CONNECTION);
                ctx.dontCompress = dontCompress;
                ctx.eventProducer.addEventListener(this);
                ctx.maxInsertRetries = maxRetries;
+               this.earlyEncode = earlyEncode;
        }

        public ClientPutBase(SimpleFieldSet fs, FCPClient client2) throws 
MalformedURLException {
@@ -89,6 +94,7 @@
                        generatedURI = new FreenetURI(genURI);
                if(finished && (!succeeded))
                        putFailedMessage = new 
PutFailedMessage(fs.subset("PutFailed"), false);
+               earlyEncode = Fields.stringToBool(fs.get("EarlyEncode"), false);
        }

        public void onLostConnection() {

Modified: trunk/freenet/src/freenet/node/fcp/ClientPutDir.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutDir.java        2006-10-04 
12:14:30 UTC (rev 10598)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutDir.java        2006-10-04 
18:41:49 UTC (rev 10599)
@@ -36,7 +36,7 @@
                        HashMap manifestElements) throws 
IdentifierCollisionException {
                super(message.uri, message.identifier, message.verbosity, 
handler,
                                message.priorityClass, message.persistenceType, 
message.clientToken, message.global,
-                               message.getCHKOnly, message.dontCompress, 
message.maxRetries);
+                               message.getCHKOnly, message.dontCompress, 
message.maxRetries, message.earlyEncode);
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                this.manifestElements = manifestElements;
                this.defaultName = message.defaultName;
@@ -62,7 +62,7 @@
                SimpleManifestPutter p;
                try {
                        p = new SimpleManifestPutter(this, 
client.core.requestStarters.chkPutScheduler, 
client.core.requestStarters.sskPutScheduler,
-                                       manifestElements, priorityClass, uri, 
defaultName, ctx, getCHKOnly, client);
+                                       manifestElements, priorityClass, uri, 
defaultName, ctx, getCHKOnly, client, earlyEncode);
                } catch (InserterException e) {
                        onFailure(e, null);
                        p = null;
@@ -135,7 +135,7 @@
                try {
                        if(!finished)
                                p = new SimpleManifestPutter(this, 
client.core.requestStarters.chkPutScheduler, 
client.core.requestStarters.sskPutScheduler,
-                                               manifestElements, 
priorityClass, uri, defaultName, ctx, getCHKOnly, client);
+                                               manifestElements, 
priorityClass, uri, defaultName, ctx, getCHKOnly, client, earlyEncode);
                } catch (InserterException e) {
                        onFailure(e, null);
                        p = null;

Modified: trunk/freenet/src/freenet/node/fcp/ClientPutDirMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutDirMessage.java 2006-10-04 
12:14:30 UTC (rev 10598)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutDirMessage.java 2006-10-04 
18:41:49 UTC (rev 10599)
@@ -39,6 +39,7 @@
        final String clientToken;
        final boolean global;
        final String defaultName;
+       final boolean earlyEncode;

        public ClientPutDirMessage(SimpleFieldSet fs) throws 
MessageInvalidException {
                identifier = fs.get("Identifier");
@@ -110,6 +111,7 @@
                        throw new 
MessageInvalidException(ProtocolErrorMessage.ERROR_PARSING_NUMBER, "Error 
parsing Persistence field: "+persistenceString, identifier);
                }
                clientToken = fs.get("ClientToken");
+               earlyEncode = Fields.stringToBool(fs.get("EarlyEncode"), false);
        }

        public SimpleFieldSet getFieldSet() {

Modified: trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java    2006-10-04 
12:14:30 UTC (rev 10598)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java    2006-10-04 
18:41:49 UTC (rev 10599)
@@ -8,6 +8,7 @@
 import freenet.node.Node;
 import freenet.node.RequestStarter;
 import freenet.support.Fields;
+import freenet.support.Logger;
 import freenet.support.SimpleFieldSet;
 import freenet.support.io.Bucket;
 import freenet.support.io.BucketFactory;
@@ -53,6 +54,7 @@
        final FreenetURI redirectTarget;
        /** Filename (hint for the final filename) */
        final String targetFilename;
+       final boolean earlyEncode;

        public static final short UPLOAD_FROM_DIRECT = 0;
        public static final short UPLOAD_FROM_DISK = 1;
@@ -186,6 +188,7 @@
                        targetFilename = fnam;
                else
                        targetFilename = null;
+               earlyEncode = Fields.stringToBool(fs.get("EarlyEncode"), false);
        }

        public SimpleFieldSet getFieldSet() {


Reply via email to