Author: toad
Date: 2008-06-14 13:27:01 +0000 (Sat, 14 Jun 2008)
New Revision: 20337
Modified:
branches/db4o/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java
branches/db4o/freenet/src/freenet/node/fcp/GetRequestStatusMessage.java
branches/db4o/freenet/src/freenet/node/fcp/ListPersistentRequestsMessage.java
branches/db4o/freenet/src/freenet/node/fcp/ModifyPersistentRequest.java
branches/db4o/freenet/src/freenet/node/fcp/RemovePersistentRequest.java
branches/db4o/freenet/src/freenet/node/fcp/SubscribeUSK.java
branches/db4o/freenet/src/freenet/node/fcp/WatchGlobal.java
Log:
Separate FCPClient's for PERSISTENCE_FOREVER and PERSISTENCE_REBOOT.
Modified: branches/db4o/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
2008-06-14 13:03:12 UTC (rev 20336)
+++ branches/db4o/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
2008-06-14 13:27:01 UTC (rev 20337)
@@ -57,7 +57,8 @@
private boolean inputClosed;
private boolean outputClosed;
private String clientName;
- private FCPClient client;
+ private FCPClient rebootClient;
+ private FCPClient foreverClient;
final BucketFactory bf;
final HashMap requestsByIdentifier;
protected final String connectionIdentifier;
@@ -90,8 +91,10 @@
public void close() {
ClientRequest[] requests;
- if(client != null)
- client.onLostConnection(this);
+ if(rebootClient != null)
+ rebootClient.onLostConnection(this);
+ if(foreverClient != null)
+ foreverClient.onLostConnection(this);
synchronized(this) {
isClosed = true;
requests = new
ClientRequest[requestsByIdentifier.size()];
@@ -99,8 +102,10 @@
}
for(int i=0;i<requests.length;i++)
requests[i].onLostConnection();
- if((client != null) && !client.hasPersistentRequests())
- server.unregisterClient(client);
+ if((rebootClient != null) &&
!rebootClient.hasPersistentRequests())
+ server.unregisterClient(rebootClient);
+ if((foreverClient != null) &&
!foreverClient.hasPersistentRequests())
+ server.unregisterClient(foreverClient);
outputHandler.onClosed();
}
@@ -144,7 +149,8 @@
public void setClientName(String name) {
this.clientName = name;
- client = server.registerClient(name, server.core, this);
+ rebootClient = server.registerRebootClient(name, server.core,
this);
+ foreverClient = server.registerForeverClient(name, server.core,
this);
if(Logger.shouldLog(Logger.MINOR, this))
Logger.minor(this, "Set client name: "+name);
}
@@ -296,10 +302,14 @@
}
}
- public FCPClient getClient() {
- return client;
+ public FCPClient getRebootClient() {
+ return rebootClient;
}
+ public FCPClient getForeverClient() {
+ return foreverClient;
+ }
+
public void finishedClientRequest(ClientRequest get) {
synchronized(this) {
requestsByIdentifier.remove(get.getIdentifier());
@@ -307,7 +317,7 @@
}
public boolean isGlobalSubscribed() {
- return client.watchGlobal;
+ return rebootClient.watchGlobal;
}
public boolean hasFullAccess() {
@@ -460,4 +470,37 @@
}
return req;
}
+
+ ClientRequest getRequest(boolean global, FCPConnectionHandler handler,
String identifier) {
+ ClientRequest req = getRequest(global, handler, identifier,
true);
+ if(req == null)
+ req = getRequest(global, handler, identifier, false);
+ return req;
+ }
+
+ private ClientRequest getRequest(boolean global, FCPConnectionHandler
handler, String identifier, boolean rebootOnly) {
+ FCPClient client =
+ global ? (rebootOnly ?
handler.server.globalRebootClient : handler.server.globalForeverClient) :
+ (rebootOnly ? handler.getRebootClient() :
handler.getForeverClient());
+ ClientRequest req = client.getRequest(identifier);
+ return req;
+ }
+
+ ClientRequest removePersistentRequest(boolean global, String
identifier) throws MessageInvalidException {
+ ClientRequest req = removePersistentRequest(global, identifier,
true);
+ if(req == null)
+ req = removePersistentRequest(global, identifier,
false);
+ return req;
+ }
+
+ ClientRequest removePersistentRequest(boolean global, String
identifier, boolean rebootOnly) throws MessageInvalidException {
+ FCPClient client =
+ global ? (rebootOnly ? server.globalRebootClient
:server.globalForeverClient) :
+ (rebootOnly ? getRebootClient() : getForeverClient());
+ ClientRequest req = client.getRequest(identifier);
+ if(req != null) {
+ client.removeByIdentifier(identifier, true);
+ }
+ return req;
+ }
}
Modified: branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java 2008-06-14
13:03:12 UTC (rev 20336)
+++ branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java 2008-06-14
13:27:01 UTC (rev 20337)
@@ -68,7 +68,8 @@
private String allowedHosts;
AllowedHosts allowedHostsFullAccess;
final WeakHashMap clientsByName;
- final FCPClient globalClient;
+ final FCPClient globalRebootClient;
+ final FCPClient globalForeverClient;
private boolean enablePersistentDownloads;
private File persistentDownloadsFile;
private File persistentDownloadsTempFile;
@@ -118,7 +119,7 @@
defaultFetchContext = client.getFetchContext();
defaultInsertContext = client.getInsertContext(false);
- globalClient = new FCPClient("Global Queue", this, null, true,
null);
+ globalRebootClient = new FCPClient("Global Queue", this, null,
true, null, ClientRequest.PERSIST_REBOOT);
logMINOR = Logger.shouldLog(Logger.MINOR, this);
Modified:
branches/db4o/freenet/src/freenet/node/fcp/GetRequestStatusMessage.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/GetRequestStatusMessage.java
2008-06-14 13:03:12 UTC (rev 20336)
+++ branches/db4o/freenet/src/freenet/node/fcp/GetRequestStatusMessage.java
2008-06-14 13:27:01 UTC (rev 20337)
@@ -32,11 +32,7 @@
public void run(FCPConnectionHandler handler, Node node)
throws MessageInvalidException {
- ClientRequest req;
- if(global) {
- req =
handler.server.globalClient.getRequest(identifier);
- } else
- req = handler.getClient().getRequest(identifier);
+ ClientRequest req = handler.getRequest(global, handler,
identifier);
if(req == null) {
ProtocolErrorMessage msg = new
ProtocolErrorMessage(ProtocolErrorMessage.NO_SUCH_IDENTIFIER, false, null,
identifier, global);
handler.outputHandler.queue(msg);
Modified:
branches/db4o/freenet/src/freenet/node/fcp/ListPersistentRequestsMessage.java
===================================================================
---
branches/db4o/freenet/src/freenet/node/fcp/ListPersistentRequestsMessage.java
2008-06-14 13:03:12 UTC (rev 20336)
+++
branches/db4o/freenet/src/freenet/node/fcp/ListPersistentRequestsMessage.java
2008-06-14 13:27:01 UTC (rev 20337)
@@ -24,11 +24,15 @@
public void run(FCPConnectionHandler handler, Node node)
throws MessageInvalidException {
-
handler.getClient().queuePendingMessagesOnConnectionRestart(handler.outputHandler);
-
handler.getClient().queuePendingMessagesFromRunningRequests(handler.outputHandler);
- if(handler.getClient().watchGlobal) {
-
handler.server.globalClient.queuePendingMessagesOnConnectionRestart(handler.outputHandler);
-
handler.server.globalClient.queuePendingMessagesFromRunningRequests(handler.outputHandler);
+
handler.getRebootClient().queuePendingMessagesOnConnectionRestart(handler.outputHandler);
+
handler.getForeverClient().queuePendingMessagesOnConnectionRestart(handler.outputHandler);
+
handler.getRebootClient().queuePendingMessagesFromRunningRequests(handler.outputHandler);
+
handler.getForeverClient().queuePendingMessagesFromRunningRequests(handler.outputHandler);
+ if(handler.getRebootClient().watchGlobal) {
+
handler.server.globalRebootClient.queuePendingMessagesOnConnectionRestart(handler.outputHandler);
+
handler.server.globalForeverClient.queuePendingMessagesOnConnectionRestart(handler.outputHandler);
+
handler.server.globalRebootClient.queuePendingMessagesFromRunningRequests(handler.outputHandler);
+
handler.server.globalForeverClient.queuePendingMessagesFromRunningRequests(handler.outputHandler);
}
handler.outputHandler.queue(new
EndListPersistentRequestsMessage());
}
Modified:
branches/db4o/freenet/src/freenet/node/fcp/ModifyPersistentRequest.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ModifyPersistentRequest.java
2008-06-14 13:03:12 UTC (rev 20336)
+++ branches/db4o/freenet/src/freenet/node/fcp/ModifyPersistentRequest.java
2008-06-14 13:27:01 UTC (rev 20337)
@@ -66,8 +66,7 @@
public void run(FCPConnectionHandler handler, Node node)
throws MessageInvalidException {
- FCPClient client = global ? handler.server.globalClient :
handler.getClient();
- ClientRequest req = client.getRequest(identifier);
+ ClientRequest req = handler.getRequest(global, handler,
identifier);
if(req==null){
Logger.error(this, "Huh ? the request is null!");
ProtocolErrorMessage msg = new
ProtocolErrorMessage(ProtocolErrorMessage.NO_SUCH_IDENTIFIER, false, null,
identifier, global);
@@ -77,4 +76,5 @@
req.modifyRequest(clientToken, priorityClass);
}
+
}
Modified:
branches/db4o/freenet/src/freenet/node/fcp/RemovePersistentRequest.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/RemovePersistentRequest.java
2008-06-14 13:03:12 UTC (rev 20336)
+++ branches/db4o/freenet/src/freenet/node/fcp/RemovePersistentRequest.java
2008-06-14 13:27:01 UTC (rev 20337)
@@ -36,18 +36,13 @@
public void run(FCPConnectionHandler handler, Node node)
throws MessageInvalidException {
- FCPClient client = global ? handler.server.globalClient :
handler.getClient();
- ClientRequest req = client.getRequest(identifier);
- if(req==null){
- if(!global)
- req = handler.removeRequestByIdentifier(identifier,
true);
- if(req == null) {
- Logger.error(this, "Huh ? the request is null!");
- return;
- }
- } else {
- client.removeByIdentifier(identifier, true);
- }
-
+ ClientRequest req = handler.removePersistentRequest(global,
identifier);
+ if(req == null && !global) {
+ req = handler.removeRequestByIdentifier(identifier,
true);
+ }
+ if(req == null) {
+ Logger.error(this, "Huh ? the request is null!");
+ }
}
+
}
Modified: branches/db4o/freenet/src/freenet/node/fcp/SubscribeUSK.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/SubscribeUSK.java
2008-06-14 13:03:12 UTC (rev 20336)
+++ branches/db4o/freenet/src/freenet/node/fcp/SubscribeUSK.java
2008-06-14 13:27:01 UTC (rev 20337)
@@ -24,7 +24,7 @@
this.dontPoll = message.dontPoll;
this.identifier = message.identifier;
this.core = core;
- core.uskManager.subscribe(message.key, this, !message.dontPoll,
handler.getClient().lowLevelClientTransient);
+ core.uskManager.subscribe(message.key, this, !message.dontPoll,
handler.getRebootClient().lowLevelClientTransient);
}
public void onFoundEdition(long l, USK key, ObjectContainer container,
ClientContext context) {
Modified: branches/db4o/freenet/src/freenet/node/fcp/WatchGlobal.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/WatchGlobal.java 2008-06-14
13:03:12 UTC (rev 20336)
+++ branches/db4o/freenet/src/freenet/node/fcp/WatchGlobal.java 2008-06-14
13:27:01 UTC (rev 20337)
@@ -39,7 +39,8 @@
public void run(FCPConnectionHandler handler, Node node)
throws MessageInvalidException {
- handler.getClient().setWatchGlobal(enabled, verbosityMask);
+ handler.getRebootClient().setWatchGlobal(enabled,
verbosityMask);
+ handler.getForeverClient().setWatchGlobal(enabled,
verbosityMask);
}
}