Author: toad
Date: 2008-05-21 12:22:36 +0000 (Wed, 21 May 2008)
New Revision: 20009

Modified:
   branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
   
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
Log:
Go to the correct scheduler class. Pass in the transient scheduler to the core 
scheduler.removeFirst().

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-05-21 12:18:32 UTC (rev 20008)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-05-21 12:22:36 UTC (rev 20009)
@@ -194,7 +194,10 @@
                                }
                        }
                }
-               schedCore.innerRegister(req, random);
+               if(req.persistent())
+                       schedCore.innerRegister(req, random);
+               else
+                       schedTransient.innerRegister(req, random);
                starter.wakeUp();
        }

@@ -213,7 +216,8 @@
                        else if(PRIORITY_HARD.equals(choosenPriorityScheduler))
                                fuzz = 0;       
                }
-               return schedCore.removeFirst(fuzz, random, offeredKeys, 
starter);
+               // schedCore juggles both
+               return schedCore.removeFirst(fuzz, random, offeredKeys, 
starter, schedTransient);
        }

        public void removePendingKey(SendableGet getter, boolean complain, Key 
key) {
@@ -249,8 +253,11 @@
        }

        public void reregisterAll(ClientRequester request) {
-               schedCore.reregisterAll(request, random);
-               starter.wakeUp();
+//             if(request.persistent())
+                       schedCore.reregisterAll(request, random);
+//             else
+//                     schedTransient.reregisterAll(request, random);
+//             starter.wakeUp();
        }

        public String getChoosenPriorityScheduler() {
@@ -258,7 +265,10 @@
        }

        public void succeeded(BaseSendableGet succeeded) {
-               schedCore.succeeded(succeeded);
+//             if(succeeded.persistent())
+                       schedCore.succeeded(succeeded);
+//             else
+//                     schedTransient.succeeded(succeeded);
        }

        public void tripPendingKey(final KeyBlock block) {

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-05-21 12:18:32 UTC (rev 20008)
+++ 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-05-21 12:22:36 UTC (rev 20009)
@@ -113,7 +113,7 @@
        // We prevent a number of race conditions (e.g. adding a retry count 
and then another 
        // thread removes it cos its empty) ... and in addToGrabArray etc we 
already sync on this.
        // The worry is ... is there any nested locking outside of the 
hierarchy?
-       synchronized SendableRequest removeFirst(int fuzz, RandomSource random, 
OfferedKeysList[] offeredKeys, RequestStarter starter) {
+       synchronized SendableRequest removeFirst(int fuzz, RandomSource random, 
OfferedKeysList[] offeredKeys, RequestStarter starter, 
ClientRequestSchedulerNonPersistent schedTransient) {
                // Priorities start at 0
                if(logMINOR) Logger.minor(this, "removeFirst()");
                boolean tryOfferedKeys = offeredKeys != null && 
random.nextBoolean();


Reply via email to