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);
        }

 }


Reply via email to