Author: toad
Date: 2006-10-05 21:05:23 +0000 (Thu, 05 Oct 2006)
New Revision: 10623

Modified:
   trunk/freenet/src/freenet/support/SectoredRandomGrabArray.java
Log:
Fix type issues.
Add the grabber to the array not just the map in addGrabber().
Logging.

Modified: trunk/freenet/src/freenet/support/SectoredRandomGrabArray.java
===================================================================
--- trunk/freenet/src/freenet/support/SectoredRandomGrabArray.java      
2006-10-05 21:03:57 UTC (rev 10622)
+++ trunk/freenet/src/freenet/support/SectoredRandomGrabArray.java      
2006-10-05 21:05:23 UTC (rev 10623)
@@ -17,7 +17,7 @@
        public SectoredRandomGrabArray(RandomSource rand) {
                this.rand = rand;
                this.grabArraysByClient = new HashMap();
-               grabArrays = new RandomGrabArrayWithClient[0];
+               grabArrays = new RemoveRandomWithClient[0];
        }

        /**
@@ -26,7 +26,7 @@
                RandomGrabArrayWithClient rga;
                if(!grabArraysByClient.containsKey(client)) {
                        rga = new RandomGrabArrayWithClient(client, rand);
-                       RandomGrabArrayWithClient[] newArrays = new 
RandomGrabArrayWithClient[grabArrays.length+1];
+                       RemoveRandomWithClient[] newArrays = new 
RemoveRandomWithClient[grabArrays.length+1];
                        System.arraycopy(grabArrays, 0, newArrays, 0, 
grabArrays.length);
                        newArrays[grabArrays.length] = rga;
                        grabArrays = newArrays;
@@ -51,6 +51,10 @@
         */
        public synchronized void addGrabber(Object client, 
RemoveRandomWithClient requestGrabber) {
                grabArraysByClient.put(client, requestGrabber);
+               RemoveRandomWithClient[] newArrays = new 
RemoveRandomWithClient[grabArrays.length+1];
+               System.arraycopy(grabArrays, 0, newArrays, 0, 
grabArrays.length);
+               newArrays[grabArrays.length] = requestGrabber;
+               grabArrays = newArrays;
        }

        public synchronized RandomGrabArrayItem removeRandom() {
@@ -58,12 +62,13 @@
                        if(grabArrays.length == 0) return null;
                        int x = rand.nextInt(grabArrays.length);
                        RemoveRandomWithClient rga = grabArrays[x];
-                       Logger.minor(this, "Picked "+x+" of 
"+grabArrays.length+" : "+rga+" : "+rga.getClient());
+                       if(Logger.shouldLog(Logger.MINOR, this))
+                               Logger.minor(this, "Picked "+x+" of 
"+grabArrays.length+" : "+rga+" : "+rga.getClient());
                        RandomGrabArrayItem item = rga.removeRandom();
                        if(rga.isEmpty() || (item == null)) {
                                Object client = rga.getClient();
                                grabArraysByClient.remove(client);
-                               RandomGrabArrayWithClient[] newArray = new 
RandomGrabArrayWithClient[grabArrays.length-1];
+                               RemoveRandomWithClient[] newArray = new 
RemoveRandomWithClient[grabArrays.length-1];
                                if(x > 0)
                                        System.arraycopy(grabArrays, 0, 
newArray, 0, x);
                                if(x < grabArrays.length-1)


Reply via email to