Author: toad
Date: 2008-06-05 19:41:40 +0000 (Thu, 05 Jun 2008)
New Revision: 20227

Modified:
   branches/db4o/freenet/src/freenet/client/async/ClientGetState.java
   branches/db4o/freenet/src/freenet/client/async/ClientRequester.java
   branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
   branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java
   branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
   
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
   branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
   branches/db4o/freenet/src/freenet/node/RequestScheduler.java
   branches/db4o/freenet/src/freenet/node/SendableGet.java
Log:
Pass ClientContext in some more places

Modified: branches/db4o/freenet/src/freenet/client/async/ClientGetState.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientGetState.java  
2008-06-05 19:31:19 UTC (rev 20226)
+++ branches/db4o/freenet/src/freenet/client/async/ClientGetState.java  
2008-06-05 19:41:40 UTC (rev 20227)
@@ -11,7 +11,7 @@
  */
 public interface ClientGetState {

-       public void schedule(ObjectContainer container);
+       public void schedule(ObjectContainer container, ClientContext context);

        public void cancel(ObjectContainer container);


Modified: branches/db4o/freenet/src/freenet/client/async/ClientRequester.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequester.java 
2008-06-05 19:31:19 UTC (rev 20226)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequester.java 
2008-06-05 19:41:40 UTC (rev 20227)
@@ -21,18 +21,14 @@
        // FIXME move the priority classes from RequestStarter here
        protected short priorityClass;
        protected boolean cancelled;
-       public final ClientRequestScheduler chkScheduler;
-       public final ClientRequestScheduler sskScheduler;
        protected final RequestClient client;

        public short getPriorityClass() {
                return priorityClass;
        }

-       protected ClientRequester(short priorityClass, ClientRequestScheduler 
chkScheduler, ClientRequestScheduler sskScheduler, RequestClient client) {
+       protected ClientRequester(short priorityClass, RequestClient client) {
                this.priorityClass = priorityClass;
-               this.chkScheduler = chkScheduler;
-               this.sskScheduler = sskScheduler;
                this.client = client;
        }

@@ -127,10 +123,12 @@
                return client;
        }

-       public void setPriorityClass(short newPriorityClass) {
+       public void setPriorityClass(short newPriorityClass, ClientContext ctx) 
{
                this.priorityClass = newPriorityClass;
-               chkScheduler.reregisterAll(this);
-               sskScheduler.reregisterAll(this);
+               ctx.chkFetchScheduler.reregisterAll(this);
+               ctx.chkInsertScheduler.reregisterAll(this);
+               ctx.sskFetchScheduler.reregisterAll(this);
+               ctx.sskInsertScheduler.reregisterAll(this);
        }

        public boolean persistent() {

Modified: 
branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java     
2008-06-05 19:31:19 UTC (rev 20226)
+++ branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java     
2008-06-05 19:41:40 UTC (rev 20227)
@@ -218,7 +218,7 @@
                }
        }

-       public void schedule(ObjectContainer container) throws InsertException {
+       public void schedule(ObjectContainer container, ClientContext context) 
throws InsertException {
                synchronized(this) {
                        if(finished) return;
                }
@@ -229,16 +229,16 @@
                        cb.onSuccess(this, container);
                        finished = true;
                } else {
-                       getScheduler().register(this);
+                       getScheduler(context).register(this);
                }
        }

-       private ClientRequestScheduler getScheduler() {
+       private ClientRequestScheduler getScheduler(ClientContext context) {
                String uriType = uri.getKeyType();
                if(uriType.equals("CHK"))
-                       return parent.chkScheduler;
+                       return context.chkInsertScheduler;
                else if(uriType.equals("SSK") || uriType.equals("KSK"))
-                       return parent.sskScheduler;
+                       return context.sskInsertScheduler;
                else throw new IllegalArgumentException();
        }


Modified: branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java        
2008-06-05 19:31:19 UTC (rev 20226)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java        
2008-06-05 19:41:40 UTC (rev 20227)
@@ -283,10 +283,10 @@
                }
        }

-       public void schedule(ObjectContainer container) {
+       public void schedule(ObjectContainer container, ClientContext context) {
                if(Logger.shouldLog(Logger.MINOR, this)) Logger.minor(this, 
"Scheduling "+this);
                for(int i=0;i<segments.length;i++) {
-                       segments[i].schedule(container);
+                       segments[i].schedule(container, context);
                }
        }


Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-06-05 19:31:19 UTC (rev 20226)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-06-05 19:41:40 UTC (rev 20227)
@@ -345,13 +345,13 @@

        /** This is after any retries and therefore is either out-of-retries or 
fatal 
         * @param container */
-       public synchronized void onFatalFailure(FetchException e, int blockNo, 
SplitFileFetcherSubSegment seg, ObjectContainer container) {
+       public synchronized void onFatalFailure(FetchException e, int blockNo, 
SplitFileFetcherSubSegment seg, ObjectContainer container, ClientContext 
context) {
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                if(logMINOR) Logger.minor(this, "Permanently failed block: 
"+blockNo+" on "+this+" : "+e, e);
                boolean allFailed;
                // Since we can't keep the key, we need to unregister for it at 
this point to avoid a memory leak
                NodeCHK key = getBlockNodeKey(blockNo);
-               if(key != null) seg.unregisterKey(key);
+               if(key != null) seg.unregisterKey(key, context);
                synchronized(this) {
                        if(isFinishing()) return; // this failure is now 
irrelevant, and cleanup will occur on the decoder thread
                        if(blockNo < dataKeys.length) {
@@ -388,6 +388,7 @@
        /** A request has failed non-fatally, so the block may be retried 
         * @param container */
        public void onNonFatalFailure(FetchException e, int blockNo, 
SplitFileFetcherSubSegment seg, RequestScheduler sched, ObjectContainer 
container) {
+               ClientContext context = sched.getContext();
                int tries;
                int maxTries = blockFetchContext.maxNonSplitfileRetries;
                boolean failed = false;
@@ -430,22 +431,22 @@
                        }
                }
                if(failed) {
-                       onFatalFailure(e, blockNo, seg, container);
+                       onFatalFailure(e, blockNo, seg, container, context);
                        if(logMINOR)
                                Logger.minor(this, "Not retrying block 
"+blockNo+" on "+this+" : tries="+tries+"/"+maxTries);
                        return;
                }
                if(cooldown) {
                        // Register to the next sub-segment before removing 
from the old one.
-                       sub.getScheduler().addPendingKey(key, sub);
-                       seg.unregisterKey(key.getNodeKey());
+                       sub.getScheduler(context).addPendingKey(key, sub);
+                       seg.unregisterKey(key.getNodeKey(), context);
                } else {
                        // If we are here we are going to retry
                        // Unregister from the old sub-segment before 
registering on the new.
-                       seg.unregisterKey(key.getNodeKey());
+                       seg.unregisterKey(key.getNodeKey(), context);
                        if(logMINOR)
                                Logger.minor(this, "Retrying block "+blockNo+" 
on "+this+" : tries="+tries+"/"+maxTries+" : "+sub);
-                       sub.add(blockNo, false, container);
+                       sub.add(blockNo, false, container, context);
                }
        }

@@ -492,13 +493,13 @@
                parentFetcher.segmentFinished(this, container);
        }

-       public void schedule(ObjectContainer container) {
+       public void schedule(ObjectContainer container, ClientContext context) {
                try {
                        SplitFileFetcherSubSegment seg = getSubSegment(0);
                        for(int 
i=0;i<dataRetries.length+checkRetries.length;i++)
-                               seg.add(i, true, container);
+                               seg.add(i, true, container, context);

-                       seg.schedule(container);
+                       seg.schedule(container, context);
                        synchronized(this) {
                                scheduled = true;
                        }
@@ -590,7 +591,7 @@
                        return checkCooldownTimes[blockNum - dataKeys.length];
        }

-       public void requeueAfterCooldown(Key key, long time, ObjectContainer 
container) {
+       public void requeueAfterCooldown(Key key, long time, ObjectContainer 
container, ClientContext context) {
                Vector v = null;
                boolean notFound = true;
                synchronized(this) {
@@ -609,7 +610,7 @@
                                if(logMINOR)
                                        Logger.minor(this, "Retrying after 
cooldown on "+this+": data block "+i+" on "+this+" : 
tries="+tries+"/"+maxTries+" : "+sub);
                                if(v == null) v = new Vector();
-                               sub.add(i, true, container);
+                               sub.add(i, true, container, context);
                                if(!v.contains(sub)) v.add(sub);
                                notFound = false;
                        }
@@ -627,7 +628,7 @@
                                if(logMINOR)
                                        Logger.minor(this, "Retrying after 
cooldown on "+this+": check block "+i+" on "+this+" : 
tries="+tries+"/"+maxTries+" : "+sub);
                                if(v == null) v = new Vector();
-                               sub.add(i+dataKeys.length, true, container);
+                               sub.add(i+dataKeys.length, true, container, 
context);
                                if(!v.contains(sub)) v.add(sub);
                                notFound = false;
                        }
@@ -638,7 +639,7 @@
                }
                if(v != null) {
                        for(int i=0;i<v.size();i++) {
-                               ((SplitFileFetcherSubSegment) 
v.get(i)).schedule(container);
+                               ((SplitFileFetcherSubSegment) 
v.get(i)).schedule(container, context);
                        }
                }
        }

Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java  
    2008-06-05 19:31:19 UTC (rev 20226)
+++ 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java  
    2008-06-05 19:41:40 UTC (rev 20227)
@@ -329,7 +329,7 @@
                return false;
        }

-       public void add(int blockNo, boolean dontSchedule, ObjectContainer 
container) {
+       public void add(int blockNo, boolean dontSchedule, ObjectContainer 
container, ClientContext context) {
                boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
                if(logMINOR) Logger.minor(this, "Adding block "+blockNo+" to 
"+this+" dontSchedule="+dontSchedule);
                if(blockNo < 0) throw new IllegalArgumentException();
@@ -359,10 +359,10 @@
                                schedule = false;
                        }
                }
-               if(schedule) schedule(container);
+               if(schedule) schedule(container, context);
                else if(!dontSchedule)
                        // Already scheduled, however this key may not be 
registered.
-                       
getScheduler().addPendingKey(segment.getBlockKey(blockNo), this);
+                       
getScheduler(context).addPendingKey(segment.getBlockKey(blockNo), this);
        }

        public String toString() {
@@ -441,10 +441,10 @@
                return segment.getCooldownWakeup(((Integer)token).intValue());
        }

-       public void requeueAfterCooldown(Key key, long time, ObjectContainer 
container) {
+       public void requeueAfterCooldown(Key key, long time, ObjectContainer 
container, ClientContext context) {
                if(Logger.shouldLog(Logger.MINOR, this))
                        Logger.minor(this, "Requeueing after cooldown "+key+" 
for "+this);
-               segment.requeueAfterCooldown(key, time, container);
+               segment.requeueAfterCooldown(key, time, container, context);
        }

        public long getCooldownWakeupByKey(Key key, ObjectContainer container) {

Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java    
    2008-06-05 19:31:19 UTC (rev 20226)
+++ 
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java    
    2008-06-05 19:41:40 UTC (rev 20227)
@@ -477,7 +477,7 @@
                                                blockInsertContext, this, 
false, CHKBlock.DATA_LENGTH,
                                                i + dataBlocks.length, 
getCHKOnly, false, false,
                                                parent.token);
-                               checkBlockInserters[i].schedule();
+                               checkBlockInserters[i].schedule(container);
                        }
                } catch (Throwable t) {
                        Logger.error(this, "Caught " + t + " while encoding " + 
this, t);

Modified: branches/db4o/freenet/src/freenet/node/RequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/RequestScheduler.java        
2008-06-05 19:31:19 UTC (rev 20226)
+++ branches/db4o/freenet/src/freenet/node/RequestScheduler.java        
2008-06-05 19:41:40 UTC (rev 20227)
@@ -7,6 +7,7 @@

 import freenet.client.FECQueue;
 import freenet.client.async.ChosenRequest;
+import freenet.client.async.ClientContext;
 import freenet.keys.ClientKey;
 import freenet.keys.Key;
 import freenet.support.PrioritizedSerialExecutor;
@@ -64,5 +65,7 @@
        public void callSuccess(final SendableInsert put, final Object keyNum, 
int prio, String name);

        public FECQueue getFECQueue();
+
+       public ClientContext getContext();

 }

Modified: branches/db4o/freenet/src/freenet/node/SendableGet.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/SendableGet.java     2008-06-05 
19:31:19 UTC (rev 20226)
+++ branches/db4o/freenet/src/freenet/node/SendableGet.java     2008-06-05 
19:41:40 UTC (rev 20227)
@@ -6,6 +6,7 @@
 import com.db4o.ObjectContainer;

 import freenet.client.FetchContext;
+import freenet.client.async.ClientContext;
 import freenet.client.async.ClientRequestScheduler;
 import freenet.client.async.ClientRequester;
 import freenet.keys.ClientKey;
@@ -96,17 +97,17 @@
                return true;
        }

-       public void schedule(ObjectContainer container) {
+       public void schedule(ObjectContainer container, ClientContext context) {
                if(Logger.shouldLog(Logger.MINOR, this))
                        Logger.minor(this, "Scheduling "+this);
-               getScheduler().register(this);
+               getScheduler(context).register(this);
        }

-       public ClientRequestScheduler getScheduler() {
+       public ClientRequestScheduler getScheduler(ClientContext context) {
                if(isSSK())
-                       return parent.sskScheduler;
+                       return context.sskFetchScheduler;
                else
-                       return parent.chkScheduler;
+                       return context.chkFetchScheduler;
        }

        /**
@@ -130,14 +131,14 @@
        /** Reset the cooldown times when the request is reregistered. */
        public abstract void resetCooldownTimes(ObjectContainer container);

-       public final void unregister(boolean staySubscribed) {
+       public final void unregister(boolean staySubscribed, ClientContext 
context) {
                if(!staySubscribed)
-                       getScheduler().removePendingKeys(this, false);
+                       getScheduler(context).removePendingKeys(this, false);
                super.unregister(staySubscribed);
        }

-       public final void unregisterKey(Key key) {
-               getScheduler().removePendingKey(this, false, key);
+       public final void unregisterKey(Key key, ClientContext context) {
+               getScheduler(context).removePendingKey(this, false, key);
        }

        public void internalError(final Object keyNum, final Throwable t, final 
RequestScheduler sched, ObjectContainer container) {
@@ -149,6 +150,6 @@
         * Only requeue if our requeue time is less than or equal to the given 
time.
         * @param key
         */
-       public abstract void requeueAfterCooldown(Key key, long time, 
ObjectContainer container);
+       public abstract void requeueAfterCooldown(Key key, long time, 
ObjectContainer container, ClientContext context);

 }


Reply via email to