Author: toad
Date: 2007-07-24 17:46:08 +0000 (Tue, 24 Jul 2007)
New Revision: 14317

Modified:
   trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
Log:
Split removePendingKeys() up. Clients will call removePendingKey() on specific 
keys...

Modified: trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2007-07-24 17:40:58 UTC (rev 14316)
+++ trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2007-07-24 17:46:08 UTC (rev 14317)
@@ -444,6 +444,53 @@
                return null;
        }

+       public void removePendingKey(SendableGet getter, boolean complain, 
ClientKey ckey) {
+               Key key = ckey.getNodeKey();
+               synchronized(pendingKeys) {
+                       Object o = pendingKeys.get(key);
+                       if(o == null) {
+                               if(complain)
+                                       Logger.normal(this, "Not found: 
"+getter+" for "+key+" removing (no such key)");
+                       } else if(o instanceof SendableGet) {
+                               SendableGet oldGet = (SendableGet) o;
+                               if(oldGet != getter) {
+                                       if(complain)
+                                               Logger.normal(this, "Not found: 
"+getter+" for "+key+" removing (1 getter)");
+                               } else {
+                                       pendingKeys.remove(key);
+                               }
+                       } else {
+                               SendableGet[] gets = (SendableGet[]) o;
+                               SendableGet[] newGets = new 
SendableGet[gets.length-1];
+                               boolean found = false;
+                               int x = 0;
+                               for(int j=0;j<gets.length;j++) {
+                                       if(j > newGets.length) {
+                                               if(!found) {
+                                                       if(complain)
+                                                               
Logger.normal(this, "Not found: "+getter+" for "+key+" removing 
("+gets.length+" getters)");
+                                                       return; // not here
+                                               }
+                                               if(gets[j] == getter || gets[j] 
== null || gets[j].isCancelled()) continue;
+                                               newGets[x++] = gets[j];
+                                       }
+                               }
+                               if(x != gets.length-1) {
+                                       SendableGet[] newNewGets = new 
SendableGet[x];
+                                       System.arraycopy(newGets, 0, 
newNewGets, 0, x);
+                                       newGets = newNewGets;
+                               }
+                               if(newGets.length == 0) {
+                                       pendingKeys.remove(key);
+                               } else if(newGets.length == 1) {
+                                       pendingKeys.put(key, newGets[0]);
+                               } else {
+                                       pendingKeys.put(key, newGets);
+                               }
+                       }
+               }
+       }
+       
        /**
         * Remove a SendableGet from the list of getters we maintain for each 
key, indicating that we are no longer interested
         * in that key.
@@ -459,50 +506,7 @@
                                Logger.error(this, "Key "+tok+" is null for 
"+getter);
                                continue;
                        }
-                       Key key = ckey.getNodeKey();
-                       synchronized(pendingKeys) {
-                               Object o = pendingKeys.get(key);
-                               if(o == null) {
-                                       if(complain)
-                                               Logger.normal(this, "Not found: 
"+getter+" for "+key+" removing (no such key)");
-                               } else if(o instanceof SendableGet) {
-                                       SendableGet oldGet = (SendableGet) o;
-                                       if(oldGet != getter) {
-                                               if(complain)
-                                                       Logger.normal(this, 
"Not found: "+getter+" for "+key+" removing (1 getter)");
-                                       } else {
-                                               pendingKeys.remove(key);
-                                       }
-                               } else {
-                                       SendableGet[] gets = (SendableGet[]) o;
-                                       SendableGet[] newGets = new 
SendableGet[gets.length-1];
-                                       boolean found = false;
-                                       int x = 0;
-                                       for(int j=0;j<gets.length;j++) {
-                                               if(j > newGets.length) {
-                                                       if(!found) {
-                                                               if(complain)
-                                                                       
Logger.normal(this, "Not found: "+getter+" for "+key+" removing 
("+gets.length+" getters)");
-                                                               return; // not 
here
-                                                       }
-                                                       if(gets[j] == getter || 
gets[j] == null || gets[j].isCancelled()) continue;
-                                                       newGets[x++] = gets[j];
-                                               }
-                                       }
-                                       if(x != gets.length-1) {
-                                               SendableGet[] newNewGets = new 
SendableGet[x];
-                                               System.arraycopy(newGets, 0, 
newNewGets, 0, x);
-                                               newGets = newNewGets;
-                                       }
-                                       if(newGets.length == 0) {
-                                               pendingKeys.remove(key);
-                                       } else if(newGets.length == 1) {
-                                               pendingKeys.put(key, 
newGets[0]);
-                                       } else {
-                                               pendingKeys.put(key, newGets);
-                                       }
-                               }
-                       }
+                       removePendingKey(getter, complain, ckey);
                }
        }



Reply via email to