Author: toad
Date: 2008-06-19 14:49:02 +0000 (Thu, 19 Jun 2008)
New Revision: 20481

Modified:
   branches/db4o/freenet/src/freenet/node/fcp/FCPClient.java
   branches/db4o/freenet/src/freenet/node/fcp/FCPPersistentRoot.java
   branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java
Log:
Use Db4o collection objects in FCPClient iff persistence type is 
PERSIST_FOREVER.
globalForeverClient is PERSIST_FOREVER not PERSIST_REBOOT!

Modified: branches/db4o/freenet/src/freenet/node/fcp/FCPClient.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/FCPClient.java   2008-06-19 
12:29:16 UTC (rev 20480)
+++ branches/db4o/freenet/src/freenet/node/fcp/FCPClient.java   2008-06-19 
14:49:02 UTC (rev 20481)
@@ -4,9 +4,14 @@
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.Vector;

 import com.db4o.ObjectContainer;
+import com.db4o.types.Db4oList;
+import com.db4o.types.Db4oMap;

 import freenet.client.async.ClientContext;
 import freenet.client.async.DBJob;
@@ -27,19 +32,28 @@
  */
 public class FCPClient {

-       public FCPClient(String name2, FCPConnectionHandler handler, boolean 
isGlobalQueue, RequestCompletionCallback cb, short persistenceType, 
FCPPersistentRoot root) {
+       public FCPClient(String name2, FCPConnectionHandler handler, boolean 
isGlobalQueue, RequestCompletionCallback cb, short persistenceType, 
FCPPersistentRoot root, ObjectContainer container) {
                this.name = name2;
                if(name == null) throw new NullPointerException();
                this.currentConnection = handler;
-               this.runningPersistentRequests = new HashSet();
-               this.completedUnackedRequests = new Vector();
-               this.clientRequestsByIdentifier = new HashMap();
+               final boolean forever = (persistenceType == 
ClientRequest.PERSIST_FOREVER);
+               if(forever) {
+                       runningPersistentRequests = 
container.ext().collections().newLinkedList();
+                       
((Db4oList)runningPersistentRequests).activationDepth(Integer.MAX_VALUE);
+                       completedUnackedRequests = 
container.ext().collections().newLinkedList();
+                       
((Db4oList)completedUnackedRequests).activationDepth(Integer.MAX_VALUE);
+                       clientRequestsByIdentifier = 
container.ext().collections().newHashMap(10);
+                       
((Db4oMap)clientRequestsByIdentifier).activationDepth(Integer.MAX_VALUE);
+               } else {
+                       runningPersistentRequests = new Vector();
+                       completedUnackedRequests = new Vector();
+                       clientRequestsByIdentifier = new HashMap();
+               }
                this.isGlobalQueue = isGlobalQueue;
                this.persistenceType = persistenceType;
                assert(persistenceType == ClientRequest.PERSIST_FOREVER || 
persistenceType == ClientRequest.PERSIST_REBOOT);
                watchGlobalVerbosityMask = Integer.MAX_VALUE;
                toStart = new LinkedList();
-               final boolean forever = (persistenceType == 
ClientRequest.PERSIST_FOREVER);
                lowLevelClient = new RequestClient() {
                        public boolean persistent() {
                                return forever;
@@ -60,11 +74,11 @@
        /** The current connection handler, if any. */
        private transient FCPConnectionHandler currentConnection;
        /** Currently running persistent requests */
-       private final HashSet runningPersistentRequests;
+       private final List runningPersistentRequests;
        /** Completed unacknowledged persistent requests */
-       private final Vector completedUnackedRequests;
+       private final List completedUnackedRequests;
        /** ClientRequest's by identifier */
-       private final HashMap clientRequestsByIdentifier;
+       private final Map clientRequestsByIdentifier;
        /** Are we the global queue? */
        public final boolean isGlobalQueue;
        /** Are we watching the global queue? */

Modified: branches/db4o/freenet/src/freenet/node/fcp/FCPPersistentRoot.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/FCPPersistentRoot.java   
2008-06-19 12:29:16 UTC (rev 20480)
+++ branches/db4o/freenet/src/freenet/node/fcp/FCPPersistentRoot.java   
2008-06-19 14:49:02 UTC (rev 20481)
@@ -18,9 +18,9 @@
        final long nodeDBHandle;
        final FCPClient globalForeverClient;

-       public FCPPersistentRoot(long nodeDBHandle) {
+       public FCPPersistentRoot(long nodeDBHandle, ObjectContainer container) {
                this.nodeDBHandle = nodeDBHandle;
-               globalForeverClient = new FCPClient("Global Queue", null, true, 
null, ClientRequest.PERSIST_REBOOT, this);
+               globalForeverClient = new FCPClient("Global Queue", null, true, 
null, ClientRequest.PERSIST_FOREVER, this, container);
        }

        public static FCPPersistentRoot create(final long nodeDBHandle, 
ObjectContainer container) {
@@ -29,11 +29,15 @@
                                return root.nodeDBHandle == nodeDBHandle;
                        }
                });
+               System.err.println("Count of roots: "+set.size());
                if(set.hasNext()) {
-                       return (FCPPersistentRoot) set.next();
+                       System.err.println("Loaded FCP persistent root.");
+                       FCPPersistentRoot root = (FCPPersistentRoot) set.next();
+                       return root;
                }
-               FCPPersistentRoot root = new FCPPersistentRoot(nodeDBHandle);
+               FCPPersistentRoot root = new FCPPersistentRoot(nodeDBHandle, 
container);
                container.set(root);
+               System.err.println("Created FCP persistent root.");
                return root;
        }

@@ -47,7 +51,7 @@
                if(set.hasNext()) {
                        return (FCPClient) set.next();
                }
-               FCPClient client = new FCPClient(name, handler, false, null, 
ClientRequest.PERSIST_FOREVER, this);
+               FCPClient client = new FCPClient(name, handler, false, null, 
ClientRequest.PERSIST_FOREVER, this, container);
                container.set(client);
                return client;
        }

Modified: branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java   2008-06-19 
12:29:16 UTC (rev 20480)
+++ branches/db4o/freenet/src/freenet/node/fcp/FCPServer.java   2008-06-19 
14:49:02 UTC (rev 20481)
@@ -116,7 +116,7 @@
                defaultFetchContext = client.getFetchContext();
                defaultInsertContext = client.getInsertContext(false);

-               globalRebootClient = new FCPClient("Global Queue", null, true, 
null, ClientRequest.PERSIST_REBOOT, null);
+               globalRebootClient = new FCPClient("Global Queue", null, true, 
null, ClientRequest.PERSIST_REBOOT, null, null);

                logMINOR = Logger.shouldLog(Logger.MINOR, this);

@@ -456,7 +456,7 @@
                        oldClient = (FCPClient) clientsByName.get(name);
                        if(oldClient == null) {
                                // Create new client
-                               FCPClient client = new FCPClient(name, handler, 
false, null, ClientRequest.PERSIST_REBOOT, null);
+                               FCPClient client = new FCPClient(name, handler, 
false, null, ClientRequest.PERSIST_REBOOT, null, null);
                                clientsByName.put(name, client);
                                return client;
                        } else {


Reply via email to