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.