Author: toad
Date: 2006-07-26 16:04:05 +0000 (Wed, 26 Jul 2006)
New Revision: 9773
Modified:
trunk/freenet/src/freenet/node/Version.java
trunk/freenet/src/freenet/node/fcp/ClientGet.java
trunk/freenet/src/freenet/node/fcp/ClientPut.java
trunk/freenet/src/freenet/node/fcp/ClientPutDir.java
trunk/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
Log:
904: Broadcast PersistentGet/Put/PutDir to all FCP clients listening on the
global queue, when a request is added.
Also when one goes from starting to started-but-not-finished.
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-07-26 15:23:54 UTC (rev
9772)
+++ trunk/freenet/src/freenet/node/Version.java 2006-07-26 16:04:05 UTC (rev
9773)
@@ -18,7 +18,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 903;
+ private static final int buildNumber = 904;
/** Oldest build of Fred we will talk to */
private static final int oldLastGoodBuild = 870;
Modified: trunk/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientGet.java 2006-07-26 15:23:54 UTC
(rev 9772)
+++ trunk/freenet/src/freenet/node/fcp/ClientGet.java 2006-07-26 16:04:05 UTC
(rev 9773)
@@ -112,6 +112,10 @@
throw e;
}
getter = new ClientGetter(this, client.node.chkFetchScheduler,
client.node.sskFetchScheduler, uri, fctx, priorityClass, client, returnBucket);
+ if(persistenceType != PERSIST_CONNECTION) {
+ FCPMessage msg = persistentTagMessage();
+ client.queueClientRequestMessage(msg, 0);
+ }
}
@@ -162,9 +166,12 @@
throw e;
}
getter = new ClientGetter(this, client.node.chkFetchScheduler,
client.node.sskFetchScheduler, uri, fctx, priorityClass, client, returnBucket);
- if((persistenceType != PERSIST_CONNECTION) && (handler != null))
- sendPendingMessages(handler.outputHandler, true, true,
false);
-
+ if(persistenceType != PERSIST_CONNECTION) {
+ FCPMessage msg = persistentTagMessage();
+ client.queueClientRequestMessage(msg, 0);
+ if(handler != null && (!handler.isGlobalSubscribed()))
+ handler.outputHandler.queue(msg);
+ }
}
/**
@@ -223,16 +230,24 @@
returnBucket = ret;
getter = new ClientGetter(this, client.node.chkFetchScheduler,
client.node.sskFetchScheduler, uri, fctx, priorityClass, client, returnBucket);
+ if(persistenceType != PERSIST_CONNECTION) {
+ FCPMessage msg = persistentTagMessage();
+ client.queueClientRequestMessage(msg, 0);
+ }
}
public void start() {
try {
getter.start();
+ started = true;
+ if(persistenceType != PERSIST_CONNECTION && !finished) {
+ FCPMessage msg = persistentTagMessage();
+ client.queueClientRequestMessage(msg, 0);
+ }
} catch (FetchException e) {
started = true;
onFailure(e, null);
}
- started = true;
}
public void onLostConnection() {
@@ -353,7 +368,7 @@
}
if(!onlyData) {
if(includePersistentRequest) {
- FCPMessage msg = new PersistentGet(identifier,
uri, verbosity, priorityClass, returnType, persistenceType, targetFile,
tempFile, clientToken, client.isGlobalQueue, started);
+ FCPMessage msg = persistentTagMessage();
handler.queue(msg);
}
if(progressPending != null)
@@ -365,6 +380,10 @@
handler.queue(allDataPending);
}
+ private FCPMessage persistentTagMessage() {
+ return new PersistentGet(identifier, uri, verbosity,
priorityClass, returnType, persistenceType, targetFile, tempFile, clientToken,
client.isGlobalQueue, started);
+ }
+
public void onFailure(FetchException e, ClientGetter state) {
synchronized(this) {
succeeded = false;
Modified: trunk/freenet/src/freenet/node/fcp/ClientPut.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPut.java 2006-07-26 15:23:54 UTC
(rev 9772)
+++ trunk/freenet/src/freenet/node/fcp/ClientPut.java 2006-07-26 16:04:05 UTC
(rev 9773)
@@ -71,8 +71,12 @@
inserter = new ClientPutter(this, data, uri, cm,
ctx, client.node.chkPutScheduler,
client.node.sskPutScheduler, priorityClass,
getCHKOnly, isMetadata, client, null);
- if((persistenceType != PERSIST_CONNECTION) && (handler != null))
- sendPendingMessages(handler.outputHandler, true, false,
false);
+ if(persistenceType != PERSIST_CONNECTION) {
+ FCPMessage msg = persistentTagMessage();
+ client.queueClientRequestMessage(msg, 0);
+ if(handler != null && (!handler.isGlobalSubscribed()))
+ handler.outputHandler.queue(msg);
+ }
}
/**
@@ -155,17 +159,25 @@
this.clientMetadata = cm;
inserter = new ClientPutter(this, data, uri, cm, ctx,
client.node.chkPutScheduler,
client.node.sskPutScheduler, priorityClass,
getCHKOnly, isMetadata, client, fs.subset("progress"));
+ if(persistenceType != PERSIST_CONNECTION) {
+ FCPMessage msg = persistentTagMessage();
+ client.queueClientRequestMessage(msg, 0);
+ }
}
public void start() {
if(finished) return;
try {
inserter.start();
+ started = true;
+ if(persistenceType != PERSIST_CONNECTION && !finished) {
+ FCPMessage msg = persistentTagMessage();
+ client.queueClientRequestMessage(msg, 0);
+ }
} catch (InserterException e) {
started = true;
onFailure(e, null);
}
- started = true;
}
protected void freeData() {
Modified: trunk/freenet/src/freenet/node/fcp/ClientPutDir.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutDir.java 2006-07-26
15:23:54 UTC (rev 9772)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutDir.java 2006-07-26
16:04:05 UTC (rev 9773)
@@ -51,8 +51,13 @@
totalSize = -1;
}
putter = p;
- if(persistenceType != PERSIST_CONNECTION)
+ if(persistenceType != PERSIST_CONNECTION) {
client.register(this, false);
+ FCPMessage msg = persistentTagMessage();
+ client.queueClientRequestMessage(msg, 0);
+ if(handler != null && (!handler.isGlobalSubscribed()))
+ handler.outputHandler.queue(msg);
+ }
}
public ClientPutDir(SimpleFieldSet fs, FCPClient client) throws
PersistenceParseException, IOException {
@@ -127,16 +132,24 @@
putter = p;
numberOfFiles = fileCount;
totalSize = size;
- if(!finished)
- start();
+ if(persistenceType != PERSIST_CONNECTION) {
+ FCPMessage msg = persistentTagMessage();
+ client.queueClientRequestMessage(msg, 0);
+ }
}
public void start() {
+ if(finished) return;
+ if(started) return;
try {
if(putter != null)
putter.start();
started = true;
Logger.minor(this, "Started "+putter);
+ if(persistenceType != PERSIST_CONNECTION && !finished) {
+ FCPMessage msg = persistentTagMessage();
+ client.queueClientRequestMessage(msg, 0);
+ }
} catch (InserterException e) {
started = true;
onFailure(e, null);
Modified: trunk/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
2006-07-26 15:23:54 UTC (rev 9772)
+++ trunk/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
2006-07-26 16:04:05 UTC (rev 9773)
@@ -226,4 +226,8 @@
}
}
+ public boolean isGlobalSubscribed() {
+ return client.watchGlobal;
+ }
+
}