Author: toad
Date: 2008-04-15 21:51:02 +0000 (Tue, 15 Apr 2008)
New Revision: 19365

Modified:
   trunk/freenet/src/freenet/node/fcp/ClientPutComplexDirMessage.java
   trunk/freenet/src/freenet/node/fcp/ClientPutDir.java
   trunk/freenet/src/freenet/node/fcp/ClientPutDiskDirMessage.java
   trunk/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
   trunk/freenet/src/freenet/node/fcp/PersistentPutDir.java
Log:
Implement #2159: Remember whether a persistent put was a ClientPutDiskDir or a 
ClientPutComplexDir

Modified: trunk/freenet/src/freenet/node/fcp/ClientPutComplexDirMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutComplexDirMessage.java  
2008-04-15 21:35:54 UTC (rev 19364)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutComplexDirMessage.java  
2008-04-15 21:51:02 UTC (rev 19365)
@@ -144,7 +144,7 @@
                // Then simply create the ClientPutDir.
                HashMap manifestElements = new HashMap();
                convertFilesByNameToManifestElements(filesByName, 
manifestElements, node);
-               handler.startClientPutDir(this, manifestElements);
+               handler.startClientPutDir(this, manifestElements, false);
        }

        /**

Modified: trunk/freenet/src/freenet/node/fcp/ClientPutDir.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutDir.java        2008-04-15 
21:35:54 UTC (rev 19364)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutDir.java        2008-04-15 
21:51:02 UTC (rev 19365)
@@ -36,13 +36,15 @@
        private final long totalSize;
        private final int numberOfFiles;
        private static boolean logMINOR;
+       private final boolean wasDiskPut;

        public ClientPutDir(FCPConnectionHandler handler, ClientPutDirMessage 
message, 
-                       HashMap manifestElements) throws 
IdentifierCollisionException, MalformedURLException {
+                       HashMap manifestElements, boolean wasDiskPut) throws 
IdentifierCollisionException, MalformedURLException {
                super(message.uri, message.identifier, message.verbosity, 
handler,
                                message.priorityClass, message.persistenceType, 
message.clientToken, message.global,
                                message.getCHKOnly, message.dontCompress, 
message.maxRetries, message.earlyEncode);
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
+               this.wasDiskPut = wasDiskPut;
                this.manifestElements = manifestElements;
                this.defaultName = message.defaultName;
                makePutter();
@@ -69,6 +71,7 @@
        public ClientPutDir(FCPClient client, FreenetURI uri, String 
identifier, int verbosity, short priorityClass, short persistenceType, String 
clientToken, boolean getCHKOnly, boolean dontCompress, int maxRetries, File 
dir, String defaultName, boolean allowUnreadableFiles, boolean global, boolean 
earlyEncode) throws FileNotFoundException, IdentifierCollisionException, 
MalformedURLException {
                super(uri, identifier, verbosity , null, client, priorityClass, 
persistenceType, clientToken, global, getCHKOnly, dontCompress, maxRetries, 
earlyEncode);

+               wasDiskPut = true;
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                this.manifestElements = makeDiskDirManifest(dir, "", 
allowUnreadableFiles);
                this.defaultName = defaultName;
@@ -142,6 +145,11 @@
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                SimpleFieldSet files = fs.subset("Files");
                defaultName = fs.get("DefaultName");
+               String type = fs.get("PutDirType");
+               if(type.equals("disk"))
+                       wasDiskPut = true;
+               else
+                       wasDiskPut = false;
                // Flattened for disk, sort out afterwards
                int fileCount = 0;
                long size = 0;
@@ -268,6 +276,7 @@
                // Storing it directly would be a PITA.
                ManifestElement[] elements = 
SimpleManifestPutter.flatten(manifestElements);
                fs.putSingle("DefaultName", defaultName);
+               fs.putSingle("PutDirType", wasDiskPut ? "disk" : "complex");
                for(int i=0;i<elements.length;i++) {
                        String num = Integer.toString(i);
                        ManifestElement e = elements[i];
@@ -307,7 +316,7 @@

        protected FCPMessage persistentTagMessage() {
                return new PersistentPutDir(identifier, publicURI, verbosity, 
priorityClass,
-                               persistenceType, global, defaultName, 
manifestElements, clientToken, started, ctx.maxInsertRetries);
+                               persistenceType, global, defaultName, 
manifestElements, clientToken, started, ctx.maxInsertRetries, wasDiskPut);
        }

        protected String getTypeName() {

Modified: trunk/freenet/src/freenet/node/fcp/ClientPutDiskDirMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutDiskDirMessage.java     
2008-04-15 21:35:54 UTC (rev 19364)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutDiskDirMessage.java     
2008-04-15 21:51:02 UTC (rev 19365)
@@ -54,7 +54,7 @@
                // Create a directory listing of Buckets of data, mapped to 
ManifestElement's.
                // Directories are sub-HashMap's.
                HashMap buckets = makeBucketsByName(dirname, "");
-               handler.startClientPutDir(this, buckets);
+               handler.startClientPutDir(this, buckets, true);
        }

     /**

Modified: trunk/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPConnectionHandler.java        
2008-04-15 21:35:54 UTC (rev 19364)
+++ trunk/freenet/src/freenet/node/fcp/FCPConnectionHandler.java        
2008-04-15 21:51:02 UTC (rev 19365)
@@ -243,7 +243,7 @@
                }
        }

-       public void startClientPutDir(ClientPutDirMessage message, HashMap 
buckets) {
+       public void startClientPutDir(ClientPutDirMessage message, HashMap 
buckets, boolean wasDiskPut) {
                if(Logger.shouldLog(Logger.MINOR, this))
                        Logger.minor(this, "Start ClientPutDir");
                String id = message.identifier;
@@ -261,7 +261,7 @@
                }
                if(success) {
                        try {
-                               cp = new ClientPutDir(this, message, buckets);
+                               cp = new ClientPutDir(this, message, buckets, 
wasDiskPut);
                        } catch (IdentifierCollisionException e) {
                                success = false;
                        } catch (MalformedURLException e) {

Modified: trunk/freenet/src/freenet/node/fcp/PersistentPutDir.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/PersistentPutDir.java    2008-04-15 
21:35:54 UTC (rev 19364)
+++ trunk/freenet/src/freenet/node/fcp/PersistentPutDir.java    2008-04-15 
21:51:02 UTC (rev 19365)
@@ -31,10 +31,11 @@
        final String token;
        final boolean started;
        final int maxRetries;
+       final boolean wasDiskPut;

        public PersistentPutDir(String identifier, FreenetURI uri, int 
verbosity, 
                        short priorityClass, short persistenceType, boolean 
global,
-                       String defaultName, HashMap manifestElements, String 
token, boolean started, int maxRetries) {
+                       String defaultName, HashMap manifestElements, String 
token, boolean started, int maxRetries, boolean wasDiskPut) {
                this.identifier = identifier;
                this.uri = uri;
                this.verbosity = verbosity;
@@ -46,6 +47,7 @@
                this.token = token;
                this.started = started;
                this.maxRetries = maxRetries;
+               this.wasDiskPut = wasDiskPut;
        }

        public SimpleFieldSet getFieldSet() {
@@ -56,6 +58,7 @@
                fs.putSingle("Persistence", 
ClientRequest.persistenceTypeString(persistenceType));
                fs.put("PriorityClass", priorityClass);
                fs.putSingle("Global", Boolean.toString(global));
+               fs.putSingle("PutDirType", wasDiskPut ? "disk" : "complex");
                SimpleFieldSet files = new SimpleFieldSet(false);
                // Flatten the hierarchy, it can be reconstructed on restarting.
                // Storing it directly would be a PITA.


Reply via email to