Author: toad
Date: 2008-12-18 22:11:53 +0000 (Thu, 18 Dec 2008)
New Revision: 24536
Modified:
branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java
branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java
branches/db4o/freenet/src/freenet/node/fcp/ClientPutBase.java
branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java
branches/db4o/freenet/src/freenet/node/fcp/ClientRequest.java
Log:
If persistence type = connection, set client to null, since it's neither reboot
nor forever.
Separate lowLevelClient from client. If persistence type = connection, create a
new one. Otherwise use the one from the FCPClient.
When sending a status message on a persistence=connection request, client can
be null, so use the origHandler if no handler was passed in.
Other client == null (or persistence type == connection) checks, including
isGlobalQueue() method.
Add some assertions.
Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java 2008-12-18
22:00:21 UTC (rev 24535)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientGet.java 2008-12-18
22:11:53 UTC (rev 24536)
@@ -118,7 +118,7 @@
}
returnBucket = ret;
getter = new ClientGetter(this,
server.core.requestStarters.chkFetchScheduler,
server.core.requestStarters.sskFetchScheduler, uri, fctx, priorityClass,
- client.lowLevelClient,
+ lowLevelClient,
returnBucket, null);
}
@@ -181,7 +181,7 @@
returnBucket = ret;
getter = new ClientGetter(this,
server.core.requestStarters.chkFetchScheduler,
server.core.requestStarters.sskFetchScheduler, uri, fctx, priorityClass,
- client.lowLevelClient,
+ lowLevelClient,
binaryBlob ? new NullBucket() :
returnBucket, binaryBlob ? returnBucket : null);
}
@@ -280,7 +280,7 @@
getter = new ClientGetter(this,
server.core.requestStarters.chkFetchScheduler,
server.core.requestStarters.sskFetchScheduler,
uri,
fctx, priorityClass,
- client.lowLevelClient,
+ lowLevelClient,
binaryBlob ? new NullBucket() : returnBucket,
binaryBlob ? returnBucket :
null);
@@ -446,6 +446,8 @@
container.activate(msg, 5);
}
+ if(handler == null && persistenceType == PERSIST_CONNECTION)
+ handler = origHandler.outputHandler;
if(handler != null)
handler.queue(msg);
else
@@ -549,7 +551,8 @@
}
finish(container);
freeData(container);
- client.notifyFailure(this, container);
+ if(client != null)
+ client.notifyFailure(this, container);
}
public void onSuccess(BaseClientPutter state, ObjectContainer
container) {
Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java 2008-12-18
22:00:21 UTC (rev 24535)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientPut.java 2008-12-18
22:11:53 UTC (rev 24536)
@@ -25,6 +25,7 @@
import freenet.client.async.ClientPutter;
import freenet.crypt.SHA256;
import freenet.keys.FreenetURI;
+import freenet.node.RequestClient;
import freenet.support.Base64;
import freenet.support.IllegalBase64Exception;
import freenet.support.Logger;
@@ -140,7 +141,7 @@
putter = new ClientPutter(this, data, uri, cm,
ctx, priorityClass,
getCHKOnly, isMetadata,
- client.lowLevelClient,
+ lowLevelClient,
null, targetFilename, binaryBlob);
}
@@ -249,7 +250,7 @@
putter = new ClientPutter(this, data, uri, cm,
ctx, priorityClass,
getCHKOnly, isMetadata,
- client.lowLevelClient,
+ lowLevelClient,
null, targetFilename, binaryBlob);
}
@@ -337,7 +338,7 @@
if(finished) oldProgress = null; // Not useful any more
putter = new ClientPutter(this, data, uri, cm, ctx,
priorityClass, getCHKOnly, isMetadata,
- client.lowLevelClient,
+ lowLevelClient,
oldProgress, targetFilename, binaryBlob);
if(persistenceType != PERSIST_CONNECTION) {
FCPMessage msg = persistentTagMessage(container);
Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientPutBase.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientPutBase.java
2008-12-18 22:00:21 UTC (rev 24535)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientPutBase.java
2008-12-18 22:11:53 UTC (rev 24536)
@@ -148,7 +148,8 @@
freeData(container);
finish(container);
trySendFinalMessage(null, container);
- client.notifySuccess(this, container);
+ if(client != null)
+ client.notifySuccess(this, container);
}
public void onFailure(InsertException e, BaseClientPutter state,
ObjectContainer container) {
@@ -276,6 +277,8 @@
if(msg == null) {
Logger.error(this, "Trying to send null message on
"+this, new Exception("error"));
} else {
+ if(persistenceType == PERSIST_CONNECTION && handler ==
null)
+ handler = origHandler.outputHandler;
if(handler != null)
handler.queue(msg);
else
@@ -288,8 +291,10 @@
if(persistenceType == PERSIST_FOREVER)
container.activate(client, 1);
synchronized(this) {
- msg = new URIGeneratedMessage(generatedURI, identifier,
client.isGlobalQueue);
+ msg = new URIGeneratedMessage(generatedURI, identifier,
isGlobalQueue());
}
+ if(persistenceType == PERSIST_CONNECTION && handler == null)
+ handler = origHandler.outputHandler;
if(handler != null)
handler.queue(msg);
else
@@ -507,4 +512,5 @@
if(persistenceType == PERSIST_FOREVER)
container.store(this);
}
+
}
Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java
2008-12-18 22:00:21 UTC (rev 24535)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientPutDir.java
2008-12-18 22:11:53 UTC (rev 24536)
@@ -130,7 +130,7 @@
SimpleManifestPutter p;
p = new SimpleManifestPutter(this,
manifestElements, priorityClass, uri,
defaultName, ctx, getCHKOnly,
- client.lowLevelClient,
+ lowLevelClient,
earlyEncode);
putter = p;
}
@@ -206,7 +206,7 @@
if(!finished)
p = new SimpleManifestPutter(this,
manifestElements,
priorityClass, uri, defaultName, ctx, getCHKOnly,
- client.lowLevelClient,
+ lowLevelClient,
earlyEncode);
putter = p;
numberOfFiles = fileCount;
Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientRequest.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientRequest.java
2008-12-18 22:00:21 UTC (rev 24535)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientRequest.java
2008-12-18 22:11:53 UTC (rev 24536)
@@ -6,6 +6,7 @@
import java.net.MalformedURLException;
import freenet.client.async.ClientRequester;
import freenet.keys.FreenetURI;
+import freenet.node.RequestClient;
import freenet.support.Fields;
import freenet.support.Logger;
import freenet.support.SimpleFieldSet;
@@ -50,6 +51,7 @@
protected final long startupTime;
/** Timestamp : completion time */
protected long completionTime;
+ protected final RequestClient lowLevelClient;
public ClientRequest(FreenetURI uri2, String identifier2, int
verbosity2, FCPConnectionHandler handler,
FCPClient client, short priorityClass2, short
persistenceType2, String clientToken2, boolean global) {
@@ -64,11 +66,23 @@
this.persistenceType = persistenceType2;
this.clientToken = clientToken2;
this.global = global;
- if(persistenceType == PERSIST_CONNECTION)
+ if(persistenceType == PERSIST_CONNECTION) {
this.origHandler = handler;
- else
+ lowLevelClient = new RequestClient() {
+
+ public boolean persistent() {
+ return false;
+ }
+
+ };
+ this.client = null;
+ } else {
origHandler = null;
- this.client = client;
+ this.client = client;
+ if(client != null)
+ assert(client.persistenceType ==
persistenceType);
+ lowLevelClient = client.lowLevelClient;
+ }
this.startupTime = System.currentTimeMillis();
}
@@ -85,9 +99,17 @@
this.persistenceType = persistenceType2;
this.clientToken = clientToken2;
this.global = global;
- if(persistenceType == PERSIST_CONNECTION)
+ if(persistenceType == PERSIST_CONNECTION) {
this.origHandler = handler;
- else
+ client = null;
+ lowLevelClient = new RequestClient() {
+
+ public boolean persistent() {
+ return false;
+ }
+
+ };
+ } else {
origHandler = null;
if(global) {
client = persistenceType == PERSIST_FOREVER ?
handler.server.globalForeverClient : handler.server.globalRebootClient;
@@ -95,6 +117,10 @@
assert(!handler.server.core.clientDatabaseExecutor.onThread());
client = persistenceType == PERSIST_FOREVER ?
handler.getForeverClient(null) : handler.getRebootClient();
}
+ lowLevelClient = client.lowLevelClient;
+ }
+ if(client != null)
+ assert(client.persistenceType == persistenceType);
this.startupTime = System.currentTimeMillis();
}
@@ -119,6 +145,8 @@
completionTime = fs.getLong("CompletionTime", 0);
if (finished)
started=true;
+ assert(client.persistenceType == persistenceType);
+ lowLevelClient = client.lowLevelClient;
}
/** Lost connection */
@@ -259,7 +287,8 @@
completionTime = System.currentTimeMillis();
if(persistenceType == ClientRequest.PERSIST_CONNECTION)
origHandler.finishedClientRequest(this);
- client.finishedClientRequest(this, container);
+ else
+ client.finishedClientRequest(this, container);
if(persistenceType == ClientRequest.PERSIST_FOREVER)
container.store(this);
}
@@ -401,7 +430,7 @@
if(uri != null) uri.removeFrom(container);
container.delete(this);
}
-
+
public boolean objectCanNew(ObjectContainer container) {
if(persistenceType != PERSIST_FOREVER) {
@@ -410,4 +439,10 @@
}
return true;
}
+
+ protected boolean isGlobalQueue() {
+ if(client == null) return false;
+ return client.isGlobalQueue;
+ }
+
}
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs