Author: nextgens
Date: 2007-09-03 23:18:43 +0000 (Mon, 03 Sep 2007)
New Revision: 14952
Modified:
trunk/freenet/src/freenet/node/fcp/AllDataMessage.java
trunk/freenet/src/freenet/node/fcp/ClientGet.java
trunk/freenet/src/freenet/node/fcp/ClientPutBase.java
trunk/freenet/src/freenet/node/fcp/ClientRequest.java
trunk/freenet/src/freenet/node/fcp/PutSuccessfulMessage.java
Log:
Improve the client layer: add both a start and a stop timestamp to requests;
Export it on some FCP messages... maybe I forgot places where it would have
been usefull (I didn't have the spec handy)
Modified: trunk/freenet/src/freenet/node/fcp/AllDataMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/AllDataMessage.java 2007-09-03
23:17:04 UTC (rev 14951)
+++ trunk/freenet/src/freenet/node/fcp/AllDataMessage.java 2007-09-03
23:18:43 UTC (rev 14952)
@@ -17,12 +17,15 @@
final long dataLength;
final boolean global;
final String identifier;
+ final String startupTime, completionTime;
- public AllDataMessage(Bucket bucket, String identifier, boolean global)
{
+ public AllDataMessage(Bucket bucket, String identifier, boolean global,
long startupTime, long completionTime) {
this.bucket = bucket;
this.dataLength = bucket.size();
this.identifier = identifier;
this.global = global;
+ this.startupTime = String.valueOf(startupTime);
+ this.completionTime = String.valueOf(completionTime);
}
long dataLength() {
@@ -34,6 +37,8 @@
fs.putSingle("DataLength", Long.toString(dataLength));
fs.putSingle("Identifier", identifier);
if(global) fs.putSingle("Global", "true");
+ fs.putSingle("StartuptTime", startupTime);
+ fs.putSingle("CompletionTime", completionTime);
return fs;
}
Modified: trunk/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientGet.java 2007-09-03 23:17:04 UTC
(rev 14951)
+++ trunk/freenet/src/freenet/node/fcp/ClientGet.java 2007-09-03 23:18:43 UTC
(rev 14952)
@@ -310,7 +310,7 @@
if(finished){
if(succeeded)
- allDataPending = new
AllDataMessage(returnBucket, identifier, global);
+ allDataPending = new
AllDataMessage(returnBucket, identifier, global, startupTime, completionTime);
else
started = true;
}
@@ -384,7 +384,9 @@
if(returnType == ClientGetMessage.RETURN_TYPE_DIRECT) {
// Send all the data at once
// FIXME there should be other options
- adm = new AllDataMessage(returnBucket,
identifier, global);
+ // FIXME: CompletionTime is set on finish() :
we need to give it current time here
+ // but it means we won't always return the same
value to clients... Does it matter ?
+ adm = new AllDataMessage(returnBucket,
identifier, global, startupTime, System.currentTimeMillis());
if(persistenceType == PERSIST_CONNECTION)
adm.setFreeOnSent();
dontFree = true;
@@ -594,6 +596,10 @@
}
fs.putSingle("Global", Boolean.toString(client.isGlobalQueue));
fs.put("BinaryBlob", binaryBlob);
+ fs.put("StartupTime", startupTime);
+ if(finished)
+ fs.put("CompletionTime", completionTime);
+
return fs;
}
Modified: trunk/freenet/src/freenet/node/fcp/ClientPutBase.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutBase.java 2007-09-03
23:17:04 UTC (rev 14951)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutBase.java 2007-09-03
23:18:43 UTC (rev 14952)
@@ -221,7 +221,7 @@
FCPMessage msg;
synchronized (this) {
if(succeeded) {
- msg = new PutSuccessfulMessage(identifier,
global, generatedURI);
+ msg = new PutSuccessfulMessage(identifier,
global, generatedURI, startupTime, completionTime);
} else {
msg = putFailedMessage;
}
@@ -306,6 +306,10 @@
// Should have a putFailedMessage... unless there is a
race condition.
fs.put("PutFailed",
putFailedMessage.getFieldSet(false));
fs.putSingle("Global", Boolean.toString(client.isGlobalQueue));
+ fs.put("StartupTime", startupTime);
+ if(finished)
+ fs.put("CompletionTime", completionTime);
+
return fs;
}
Modified: trunk/freenet/src/freenet/node/fcp/ClientRequest.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientRequest.java 2007-09-03
23:17:04 UTC (rev 14951)
+++ trunk/freenet/src/freenet/node/fcp/ClientRequest.java 2007-09-03
23:18:43 UTC (rev 14952)
@@ -37,6 +37,10 @@
protected String clientToken;
/** Is the request on the global queue? */
protected final boolean global;
+ /** Timestamp : startup time */
+ protected final long startupTime;
+ /** Timestamp : completion time */
+ protected long completionTime = Long.MAX_VALUE;
public ClientRequest(FreenetURI uri2, String identifier2, int
verbosity2, FCPConnectionHandler handler,
FCPClient client, short priorityClass2, short
persistenceType2, String clientToken2, boolean global) {
@@ -56,6 +60,7 @@
else
origHandler = null;
this.client = client;
+ this.startupTime = System.currentTimeMillis();
}
public ClientRequest(FreenetURI uri2, String identifier2, int
verbosity2, FCPConnectionHandler handler,
@@ -80,6 +85,7 @@
} else {
client = handler.getClient();
}
+ this.startupTime = System.currentTimeMillis();
}
public ClientRequest(SimpleFieldSet fs, FCPClient client2) throws
MalformedURLException {
@@ -98,6 +104,11 @@
clientToken = fs.get("ClientToken");
finished = Fields.stringToBool(fs.get("Finished"), false);
global = Fields.stringToBool(fs.get("Global"), false);
+ final String stime = fs.get("StartupTime");
+ this.startupTime = stime == null ? System.currentTimeMillis() :
Fields.parseLong(stime);
+ final String ctime = fs.get("CompletionTime");
+ if(ctime != null)
+ completionTime = Fields.parseLong(ctime);
}
/** Lost connection */
@@ -229,6 +240,7 @@
/** Request completed. But we may have to stick around until we are
acked. */
protected void finish() {
+ completionTime = System.currentTimeMillis();
if(persistenceType == ClientRequest.PERSIST_CONNECTION)
origHandler.finishedClientRequest(this);
else
Modified: trunk/freenet/src/freenet/node/fcp/PutSuccessfulMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/PutSuccessfulMessage.java
2007-09-03 23:17:04 UTC (rev 14951)
+++ trunk/freenet/src/freenet/node/fcp/PutSuccessfulMessage.java
2007-09-03 23:18:43 UTC (rev 14952)
@@ -12,11 +12,14 @@
public final String identifier;
public final boolean global;
public final FreenetURI uri;
+ public final String startupTime, completionTime;
- public PutSuccessfulMessage(String identifier, boolean global,
FreenetURI uri) {
+ public PutSuccessfulMessage(String identifier, boolean global,
FreenetURI uri, long startupTime, long completionTime) {
this.identifier = identifier;
this.global = global;
this.uri = uri;
+ this.startupTime = String.valueOf(startupTime);
+ this.completionTime = String.valueOf(completionTime);
}
public SimpleFieldSet getFieldSet() {
@@ -26,6 +29,8 @@
// FIXME debug and remove!
if(uri != null)
fs.putSingle("URI", uri.toString());
+ fs.putSingle("StartuptTime", startupTime);
+ fs.putSingle("CompletionTime", completionTime);
return fs;
}