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

Reply via email to