Author: toad
Date: 2008-08-02 01:37:43 +0000 (Sat, 02 Aug 2008)
New Revision: 21576

Modified:
   branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
   
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
   
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
Log:
Activate and deactivate the hashset's within the allRequestsByClientRequest 
hashmap

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-08-02 01:05:01 UTC (rev 21575)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-08-02 01:37:43 UTC (rev 21576)
@@ -1193,9 +1193,9 @@

        public void removeFromAllRequestsByClientRequest(ClientRequester 
clientRequest, SendableRequest get, boolean dontComplain) {
                if(get.persistent())
-                       schedCore.removeFromAllRequestsByClientRequest(get, 
clientRequest, dontComplain);
+                       schedCore.removeFromAllRequestsByClientRequest(get, 
clientRequest, dontComplain, selectorContainer);
                else
-                       
schedTransient.removeFromAllRequestsByClientRequest(get, clientRequest, 
dontComplain);
+                       
schedTransient.removeFromAllRequestsByClientRequest(get, clientRequest, 
dontComplain, null);
        }



Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java  
    2008-08-02 01:05:01 UTC (rev 21575)
+++ 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java  
    2008-08-02 01:37:43 UTC (rev 21576)
@@ -78,11 +78,15 @@
                short prio = req.getPriorityClass(container);
                if(logMINOR) Logger.minor(this, "Still registering "+req+" at 
prio "+prio+" retry "+retryCount+" for "+req.getClientRequest());
                Set v = (Set) 
allRequestsByClientRequest.get(req.getClientRequest());
+               if(persistent())
+                       container.activate(v, 1);
                if(v == null) {
                        v = makeSetForAllRequestsByClientRequest(container);
                        allRequestsByClientRequest.put(req.getClientRequest(), 
v);
                }
                v.add(req);
+               if(persistent())
+                       container.deactivate(v, 1);
                addToGrabArray(prio, retryCount, fixRetryCount(retryCount), 
req.getClient(), req.getClientRequest(), req, random, container);
                if(logMINOR) Logger.minor(this, "Registered "+req+" on 
prioclass="+prio+", retrycount="+retryCount+" v.size()="+v.size());
        }
@@ -139,7 +143,11 @@
                synchronized(lock) {
                        Set h = (Set) allRequestsByClientRequest.get(request);
                        if(h == null) return;
+                       if(persistent())
+                               container.activate(h, 1);
                        reqs = (SendableRequest[]) h.toArray(new 
SendableRequest[h.size()]);
+                       if(persistent())
+                               container.deactivate(h, 1);
                }

                for(int i=0;i<reqs.length;i++) {
@@ -168,7 +176,7 @@
                                recentSuccesses.remove(0);
        }

-       protected void removeFromAllRequestsByClientRequest(SendableRequest 
req, ClientRequester cr, boolean dontComplain) {
+       protected void removeFromAllRequestsByClientRequest(SendableRequest 
req, ClientRequester cr, boolean dontComplain, ObjectContainer container) {
                if(logMINOR)
                        Logger.minor(this, "Removing from 
allRequestsByClientRequest: "+req+ " for "+cr);
                        Set v = (Set) allRequestsByClientRequest.get(cr);
@@ -176,9 +184,15 @@
                                if(!dontComplain)
                                        Logger.error(this, "No HashSet 
registered for "+cr+" for "+req);
                        } else {
+                               if(persistent())
+                                       container.activate(v, 1);
                                boolean removed = v.remove(req);
                                if(v.isEmpty())
                                        allRequestsByClientRequest.remove(cr);
+                               else {
+                                       if(persistent())
+                                               container.deactivate(v, 1);
+                               }
                                if(logMINOR) Logger.minor(this, (removed ? "" : 
"Not ") + "Removed "+req+" from HashSet for "+cr+" which now has "+v.size()+" 
elements");
                        }
        }

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-08-02 01:05:01 UTC (rev 21575)
+++ 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-08-02 01:37:43 UTC (rev 21576)
@@ -503,9 +503,9 @@
                        ClientRequester cr = req.getClientRequest();
                        if(req.canRemove(container)) {
                                if(req.persistent())
-                                       
removeFromAllRequestsByClientRequest(req, cr, false);
+                                       
removeFromAllRequestsByClientRequest(req, cr, false, container);
                                else
-                                       
schedTransient.removeFromAllRequestsByClientRequest(req, cr, false);
+                                       
schedTransient.removeFromAllRequestsByClientRequest(req, cr, false, null);
                                // Do not remove from the pendingKeys list.
                                // Whether it is running a request, waiting to 
execute, or waiting on the
                                // cooldown queue, ULPRs and backdoor 
coalescing should still be active.


Reply via email to