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 {